0

select on change を使用すると問題が発生します - 変数が失われます... ヘッダーは次のとおりです。

function reassignPrescreen(prescreen, closer) {
var prescreen = $('input[name=prescreen]');
var closer = $('input[name=closer]');
var data = 'prescreenid=' + prescreen.val() + '&closer=' + closer.val();
alert(data);
$.ajax({
    type: "GET",
    url: "reassign-prescreen.php",
    data: data,
    success: function (html) {
        alert(html);
    }
});
}

そして、私は体に複数のフォームを持っています:

<form action="reassign-prescreen.php" class="psreassign">
<input type="hidden" name="prescreen" value="1">
<SELECT class="chzn-select medium-select select" name="closer" onchange='reassignPrescreen()' data-placeholder="Choose a Closer">
    <OPTION VALUE=""></OPTION>
    <OPTION VALUE="59785">Ron </OPTION>
    <OPTION VALUE="59786">Paul </OPTION>
    <OPTION VALUE="74236">Jack </OPTION>
</SELECT>
</form>
<form action="reassign-prescreen.php" class="psreassign">
<input type="hidden" name="prescreen" value="2">
<SELECT class="chzn-select medium-select select" name="closer" onchange='reassignPrescreen()' data-placeholder="Choose a Closer">
    <OPTION VALUE=""></OPTION>
    <OPTION VALUE="59785">Ron </OPTION>
    <OPTION VALUE="59786">Paul </OPTION>
    <OPTION VALUE="74236">Jack </OPTION>
</SELECT>
</form>

....ETC...

今、私は常に prescreen を 1 として取得し、UNDEFINED 値に近づけます ??

4

5 に答える 5

1
  var closer = $('input[name=closer]');

する必要があります

  var closer = $('select[name=closer]');
于 2012-10-11T13:52:17.147 に答える
1

変更されたコード。クローズはセレクトボックス未入力です。jsfiddle

function reassignPrescreen(self){

    var form = $(self).parents("form:first");
    var prescreen = $('input[name=prescreen]', form );
    var closer = $('select[name=closer]', form);
    var data = 'prescreenid=' + prescreen.val() + '&closer=' + closer.val();
    alert(data);
    $.ajax({
        type: "GET",
        url: "reassign-prescreen.php",
        data: data,
        success: function (html) {
            alert(html);
        }
    });
}
于 2012-10-11T13:52:23.690 に答える
0

フォームIDを使用して名前で要素を検索し、名前を「」に入れます

それで

$('#id-of-form input[name="closer"]')
于 2012-10-11T13:50:09.930 に答える
0

まず...メソッド宣言には2つの変数が付属しています...

function reassignPrescreen(**prescreen, closer**) {

その変数を再度定義すると、変数「prescreen」がすぐに上書きされます。次の行は、渡したものがなくなったことを意味します...

var prescreen = $('input[name=prescreen]');

あなたの機能は-

function reassignPrescreen(prescreen, closer) {
var _prescreen = $(prescreen);
var _closer = $(closer);
var data = 'prescreenid=' + _prescreen.val() + '&closer=' + _closer.val();
alert(data);
$.ajax({
    type: "GET",
    url: "reassign-prescreen.php",
    data: data,
    success: function (html) {
        alert(html);
    }
});
}

それが必要な動作ではなく、変数を渡す必要がない場合は、これを使用する必要があります。

function reassignPrescreen() {
var prescreen = $("input[name='prescreen']");
var closer = $("input[name='closer']");
var data = 'prescreenid=' + prescreen.val() + '&closer=' + closer.val();
alert(data);
$.ajax({
    type: "GET",
    url: "reassign-prescreen.php",
    data: data,
    success: function (html) {
        alert(html);
    }
});
}

編集:はい、html の「onchange」イベントにあるものに基づいて、上記の 2 番目の方法を使用する必要があります。reassignPrescreen()

于 2012-10-11T13:55:43.280 に答える
0

次のように、パラメータを onchange 呼び出しに追加しthisます。

onchange='reassignPrescreen(this)'

次に、次のコードを置き換えます。

function reassignPrescreen() {
   var prescreen = $('input[name=prescreen]');
   var closer = $('input[name=closer]');

これについて:

function reassignPrescreen(elem) {
   var prescreen = $(elem).siblings('input[name=prescreen]');
   var closer = $(elem).val();

これは、onchange イベントが発生した具体的な「選択」のコンテキストで正しいことを行います。

于 2012-10-11T13:53:25.203 に答える