Jquery - 当我更改下拉值而非默认项目时,如何清除输入的数据?

时间:2012-08-20 11:18:51

标签: jquery jquery-ui jquery-plugins

在这里,我有一个下拉列表,其中包含3个值,如0,1,2和5个文本框。

http://jsfiddle.net/ssthil/j4JZX/3/

当我更改下拉值,从信用卡到购买卡或购买卡到信用卡时,我只需要清除输入的数据。不是从0到1或0到2。

添加更多内容:

我有3个下拉值为0,1和3.还有5个文本框。默认情况下,下拉值为0,现在我输入该文本框的数据,然后将下拉值0更改为1或2.此时间不应再发生这些文本框值的更改。如果我选择从1到2或2到1的下拉值,则此时间数据应清除。

任何人都可以帮忙解决这个问题吗?

4 个答案:

答案 0 :(得分:1)

保存以前选择的值,将其与当前选定的值进行比较,如果有转化2 -> 11 -> 2,请清理文本框:

 $(function(){
     var previousValue = $("select").val();
     $('select').change(function() {
         var currentValue = $(this).val();
         if (previousValue == 2 && currentValue == 1 
             || previousValue == 1 && currentValue == 2) {
           $("input.textbox").val("");
         }
         previousValue = currentValue;
     });
 })​

Fiddle

答案 1 :(得分:0)

我已经更新了你的小提琴:

http://jsfiddle.net/j4JZX/5/

我所做的是清除所有关于更改html选择更改事件的文本框

请看一下。

答案 2 :(得分:0)

如果您有select元素来选择付款类型,则只需在值更改时重置文本框类的值即可。您可以使用focus回调来保存以前选择的值。一旦开始做出选择,删除默认选择也可能是一个好主意。为什么有人需要选择 -Select - 作为付款方式?

var previous;
$("select").focus(function () {
    previous = this.value; // Store the value before change.
}).change(function() {
    $("select option[value='-1']").remove(); // Remove default selection.
    if(previous != -1) { // If the last value wasn't -1 ('-Select-')
      $(".textbox").val(""); // Then clear all textboxes.
    }
});

答案 3 :(得分:0)

您需要保存最后一个值以跟踪@Joao建议的更改。您可以使用select元素的属性来存储最后选择的值,而不是使用全局变量。像这样:

$(function(){
 $("select").attr('rel', $("select").val());

 $('select').change(function() {
     previousValue = $("select").attr('rel');

     var currentValue = $(this).val();
     if (previousValue != 0) {
       $("input.textbox").val("");
     }
     $("select").attr('rel', currentValue);
 });
})​