从js函数中的数组id中检索值

时间:2014-12-31 07:35:39

标签: javascript jquery

您好我正在编写基于php的代码,其中我生成了具有不同ID和名称的复选框

<input type="checkbox" name="settle_check[]" id="settle_check['.$res2['id'].']" value="1" onclick="calculate_discount(\''.$res2['id'].'\');"/>

我计算折扣的功能如下

 function calculate_discount(id){
    alert($('#settle_check['+id+']').val());
    if($('#settle_check['+id+']').is(":checked")){
        alert('Hiii');
    }
    else{
        alert('Byeee');
    }
}

现在每次都没有捕获值并发出未定义的警报。 请帮助我。

3 个答案:

答案 0 :(得分:3)

您在ID选择器中使用[]作为元字符。你需要逃脱它们。

使用

$('#settle_check\\['+id+'\\]').val()

Docs

  

使用任何元字符(例如!“#$%&amp;'()* +,。/:;&lt; =&gt;?@ [] ^`{|}〜)作为文字作为名称的一部分,必须使用两个反斜杠进行转义:\\。

OR

您可以使用Attribute Equals Selector [name="value"]

$('[id="settle_check[' + id +']"]').val()

答案 1 :(得分:1)

你也可以试试这个:

不是传递id,而是传递元素itselfe,如:

<input type="checkbox" name="settle_check[]" value="1" click="calculate_discount(this);"/>

并将功能更新为:

function calculate_discount(element){
    alert($(element).val());
    if($(element).is(":checked")){
        alert('Hiii');
    }
    else{
        alert('Byeee');
    }
}

使用此解决方案可以避免不必要的jQuery搜索。

答案 2 :(得分:1)

使用此

$('#settle_check\\['+id+'\\]').val()