2012-02-08 82 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,如果未選中。