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,给你一个空场把你的新一轮领域英寸

另外,侧面说明,而不是说whileifreturn false业务中,可以使用得到更好的服务一个for循环。

+0

你好:)几乎可行!当选择2种票类型时,我仍然需要两个箱子,选择3时选择三个,等等。这消除了所有,只是给了一个。 –

+0

哦,是的,因为它在循环中。我不好,把空行()移到while循环之前,而不是在里面。我会更新答案以反映。 – ben