0

フォームから取得した 2 つの変数を使用して計算しようとすると、NaN 値が返されます。また、parseInt を試してみると、NaN が返されます。IDK が役立つ場合は、値は PHP を使用して URL から取得されます。例:.../serch.php?animal=all&color=any&sunSd=all&lifeSpn=all&limiterF=5&limiterT=20

limiterF と limiterT は、私が使用している変数です。html:

<form id='serchForm' action="serch.php" method="GET">
...
            <fieldset>
            From: <input type='text' id = 'limiterFid' name='limiterF' value=<?php if (!empty($_GET['limiterF'])) {echo $limiterF;} else {echo 0;} ?> size="2" /><br />
            To: <input type='text' id = 'limiterTid' name='limiterT' value=<?php if (!empty($_GET['limiterT'])) {echo $limiterT;} else {echo 20;} ?>  size="2" />
            </fieldset>
        <input type="submit" id="submitNew" />
        <input type="submit" id="nextSerch" />

JS:

$(document).ready(function() {
    $("#serchForm input").click(function(e) {
        if(e.target.id == 'submitNew') {
            e.preventDefault();
            $('#limiterFid').attr("value", 0);
            $('#limiterTid').attr("value", 20);
            $("#serchForm").submit();
        } else if (e.target.id == 'nextSerch') {
            e.preventDefault();
            var limiterF = $('#limiterFid').value,
            limiterT = $('#limiterTid').value;
            limiterT = limiterF + limiterT;
            limiterF = parseInt(limiterF, 5);

            $('#limiterFid').attr("value", limiterF);
            $('#limiterTid').attr("value", limiterT);
            $("#serchForm").submit();
        } else {
            return;
        }
    });
});

nextSerch をクリックすると、次のように返されます。

.../serch.php?animal=all&color=any&sunSd=all&lifeSpn=all&limiterF=NaN&limiterT=NaN
4

2 に答える 2

4

value is a property of the DOM element not the jQuery object. You can use either val() or value on the original DOM element.

$('element').val()
// OR
$('element')[0].value

Also to set values you typically don't use attr, you use val.

$('element').val('newValue')
于 2012-12-27T18:02:34.790 に答える
2

jQuery オブジェクトの「値」プロパティを呼び出そうとしているため、未定義が返されるため、 .val()メソッドを使用します。value

$(document).ready(function() {
    $("#serchForm input").click(function(e) {
        if(e.target.id == 'submitNew') {
            e.preventDefault();
            $('#limiterFid').val(0);
            $('#limiterTid').val(20);
            $("#serchForm").submit();
        } else if (e.target.id == 'nextSerch') {
            e.preventDefault();
            var limiterF = $('#limiterFid').val(),
            limiterT = $('#limiterTid').val();
            limiterT = limiterF + limiterT;
            limiterF = parseInt(limiterF, 5);

            $('#limiterFid').val(limiterF);
            $('#limiterTid').val(limiterT);
            $("#serchForm").submit();
        } else {
            return;
        }
    });
});
于 2012-12-27T18:04:17.367 に答える