0

次のjqueryスクリプトがあります

var $checked = $inputs.filter(':checked');
var numChecked = $checked.length;

$checked.each(function () {
    var val = (this).value;

    if (val.indexOf("Ya") != -1) {
        alert('old val   ' + val);
        val = val.replace("Ya", "Y2a");
        alert('new val   ' + val);
        alert($(':input[value^="' + val + '"]').value);

        //$(val).attr({ 'disabled': true, 'aria-disabled': true })[flag ? 'addClass' : 'removeClass']('ui-state-disabled');
    }
}); 

古い値は次のとおりです: ltrYaxis0

新しい値は次のとおりです。ltrY2axis0

置き換えることはできますが、新しい入力が見つかるかどうかをテストしようとすると、undefinedと表示されます。これを非表示にするか無効にする必要があります

4

3 に答える 3

0

この行

var val = (this).value;

には 2 つのエラーがあります。

  • $を逃した
  • .value ではなく .val()

    var val = $(this).val();
    

注意してください:

    $(val).attr({ 'disabled': true, 'aria-disabled': true })

それはあるべきです

$(this).attr({ 'disabled': true, 'aria-disabled': true }) ...
于 2013-09-16T11:05:12.620 に答える
0

要件を正しく理解していれば、これで十分です

var $checked = $inputs.filter(':checked');
var numChecked = $checked.length;

$checked.filter(function () {
    return this.value.indexOf("Ya") != -1;
}).val(function (idx, val) {
    return val.replace("Ya", "Y2a");
}).attr({
    'disabled': true,
    'aria-disabled': true
})[flag ? 'addClass' : 'removeClass']('ui-state-disabled');
于 2013-09-11T13:26:39.550 に答える