Js脚本继续执行onchange
问题描述:
下面的代码不断添加文本框。我希望它只是添加任何第一选择然后停止。如果你按一个,然后再按两个,它又增加了两个,如果你选择更多,则继续这样做。Js脚本继续执行onchange
$(function(){
$('select').on('change', function() {
i = 1
var y = parseInt(this.value) + 1
\t while (i != y)
\t {
\t \t $("#boxes").append('<input type="text" name="ticket_'+ i + '_name" placeholder="Ticket ' + i +' Type">');
\t \t $("#boxes").append('<input type="text" name="ticket_'+ i + '_price" placeholder="Ticket ' + i +' Price">');
\t \t $("#boxes").append('<input type="text" name="ticket_'+ i + '_quantity" placeholder="Ticket ' + i +' Quantity">');
\t \t $("#boxes").append('<p></p>');
\t \t i = i + 1
\t \t if (i == y){
\t \t \t return false
\t \t }
\t }
})
});
<html>
<head>
<meta charset="utf-8" />
<script data-require="jquery" data-semver="3.1.1" src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script>
<script src="add.js"></script>
</head>
<body>
<select id="droplist">
\t <option>Select</option>
\t \t <option value="1">One</option>
\t \t <option value="2">Two</option>
\t \t <option value="3">Three</option>
</select>
<form id="boxes">
\t \t <input type='hidden' name='eventname' value='$eventname '>
</form>
</body>
</html>
答
的.append()
功能将添加任何你在它已经得到了你所选择的元素的结束(这是追加的定义)。所以你的代码会说:“只要选择了一个选项,就结束这些选项”。
但是,这听起来像你不想在最后添加新的,你希望他们是唯一的,这意味着事先摆脱第一个。
在while(i != y)
行的上方,加上$('#boxes').empty();
。 This将删除当前所有的元素里面#boxes,给你一个空场把你的新一轮领域英寸
另外,侧面说明,而不是说while
和if
和return false
业务中,可以使用得到更好的服务一个for
循环。
你好:)几乎可行!当选择2种票类型时,我仍然需要两个箱子,选择3时选择三个,等等。这消除了所有,只是给了一个。 –
哦,是的,因为它在循环中。我不好,把空行()移到while循环之前,而不是在里面。我会更新答案以反映。 – ben