2012-02-08 73 views
0

我通过ajax加载内容,并希望更改每个复选框的值,如果点击它们。我尝试如何更改点击输入的值?

function calculate(){ 
    if($('input[type=checkbox][checked]')) { 
     $(this).attr({ 
      value: 1 
     }); 
    } else { 
     $(this).attr({ 
      value: 0 
     }); 
    } 
    calculatebbb(); 
} 

,并添加到每个输入:

<input type="checkbox" name="a003" value="230073" onclick="calculate()"> 

,但它不检查这个elemnt,它chcked所有元素。

回答

1

这个工作,只要你喜欢

HTML

<input type="checkbox" name="a003" value="230073" onclick="calculate(this);"> 

的Javascript

function calculate(checkbox){ 
    console.log($(checkbox)); 
    if($(checkbox).attr("checked")) { 
     $(checkbox).val(1); 
    } else { 
     $(checkbox).val(0); 
    } 
    calculatebbb(); 
} 

演示http://jsfiddle.net/2hy4h/

你做了什么错:

this不在这里输入。如果您使用console.log(this)进行检查。

input[type=checkbox][checked]不选择您的输入,也许在这里使用一个ID。

您可以设置.val(1)

0

而不是

​​3210

尝试

$(this).val(1); 

//编辑:对方误以为是您在功能calculate使用this。这里this指的是功能 - 不是输入。你应该使用这样的jQuery:

$(document).ready(function() { 
    $('input').click(function() { 
    // do your things with this 
    }); 
}); 

而不是在HTML中定义点击处理程序。

0

在这种情况下 应该是这样的。 $(this).val('value u wan to put');

if you want to use jquery document.getElementById('id')。value = xxx; ,但在这种情况下,你不得不把id你的html元素。

1

试试这个:

...ajax call... 
success: function(data) { 
... append Your input elements to #myDiv ... 
    $('#myDiv input').bind('click', function(){ 
     var that = $(this); 
     if(that.is(':checked')) { 
      that.val(1) 
      } else { 
     that.val(0) 
     } 
     calculatebbb(); 
    }); 
}, 
... 
+0

但是我可以把这个函数,如果我通过ajax加载输入元素,并需要应用此点击功能只输入一些div? (并非全部文件) – skywind 2012-02-08 07:39:09

1

尝试整理一个

if($('input[type=checkbox]')bind('click', function(){ 

    $(this).attr('checked', !$(this).attr('checked')); 

}); 
0

你的代码改成这样:

function calculate(obj) { 
    obj.value = obj.checked + 0; 
    calculatebbb(); 
} 

和HTML:

<input type="checkbox" name="a003" value="230073" onclick="calculate(this)"> 

所以,如果选中的值将变成1和0,如果未选中。