0

textboxjQuery を使用して、フォーム内のいくつかの es を反復処理しようとしています。先日は問題なく動いていたのに、突然動かなくなりました。確かに何か問題が発生したことは理解していますが、特定できませんでした。エラーが表示された場合は、この問題を解決してください。コードは次のとおりです。

<?php
$serial = 0;
while ($row_details = mysql_fetch_array($res_details)) {
    $serial++;
    $remaining_qty = $row_details['ordered_qty'] - $row_details['received_qty'];
    echo '<tr>';
    echo '<td>' . $serial . '.<input type="hidden" name="pcode-' . $serial . '" id="pcode-' . $serial . '" value="' . $row_details['product_code'] . '"/></td>';
    echo '<td>' . $row_details['product_name'] . ' [' . $row_details['product_code'] . ']</td>';
    echo '<td>' . $row_details['ordered_qty'] . '</td>';
    echo '<td>' . $row_details['received_qty'] . '</td>';
    echo '<td>' . $remaining_qty . '<input type="hidden" name="remain-' . $serial . '" id="remain-' . $serial . '" value="' . $remaining_qty . '"/></td>';
    echo '<td><input type="text" name="newreceive-' . $serial . '" id="newreceive-' . $serial . '" size="5" class="money-field" value="' . $remaining_qty . '"/></td>';
    echo '</tr>';
}
?>

<script type="text/javascript">
var count = <?php echo $serial; ?>;// count is the no of rows
var verified = true;
for (var i = 1; i <= count; i++) {
    if ($("#pcode-" + i).val().length > 0) {
        if (parseInt($("#remain-" + i).val()) < parseInt($("#newreceive-" + i).val())) {
            verified = false;
        }
    }
    alert("Iteration" + i);
}

/* After this line the code does not works*/
alert("inside verify()");
if (verified) {
    alert("Verification successful");
    $("#update").removeAttr('disabled');
}
else {
    alert("Verification failed");
    $("#update").attr('disabled', 'disabled');
}
</script>

verify()これは、ボタンのクリック時に呼び出される関数内にあります。forコードはループ後に機能しません。

4

2 に答える 2

0

parseIntforcountloopshould breakafter verified=false;likeを使用する必要があると思います。

var count = <?php echo $serial; ?>;// count is the no of rows
var verified = true;
for (var i = 1; i <= parseInt(count); i++) {// parseInt the count
    if ($("#pcode-" + i).val().length > 0) {
        if (parseInt($("#remain-" + i).val()) < parseInt($("#newreceive-" + i).val())) {
            verified = false;
            break;// break the loop if your validation fails
        }
    }
    alert("Iteration" + i);
}

これを試してみて更新しました

<script>
    $(function(){
        var count = <?php echo $serial; ?>;// count is the no of rows
        var verified = true;
        for (var i = 1; i <= parseInt(count); i++) {
            if ($("#pcode-" + i).val().length > 0) {
                if (parseInt($("#remain-" + i).val()) < parseInt($("#newreceive-" + i).val())) {
                    verified = false;break;
                }
            }
            alert("Iteration" + i);
        }

        /* After this line the code does not works*/
        alert("inside verify()");
        if (verified) {
            alert("Verification successful");
            $("#update").removeAttr('disabled');
        }
        else {
            alert("Verification failed");
            $("#update").attr('disabled', 'disabled');
        }
    });
</script>
于 2013-07-11T05:06:40.450 に答える
0

バグを見つけました。実際、ページに別のphpスクリプトcountを配置して、それを使用および更新したため、の値を台無しにしました。そのため、 の値も変更され、jquery コードが誤動作します。$serialcount

申し訳ありません...皆さん。ばかげた間違いでした。;-)

于 2013-07-11T05:35:41.960 に答える