0

ユーザーが入力するフィールドがあり、それを jQuery に渡し、Web サービスに渡します。

次の方法でテキストボックスの値を取得できます。

変数名 = $("#MainContent_txtName").val()

私が抱えている問題は、リスト アイテム コレクションで構成される複数選択です。このサーバー側を行う場合は、次のようにします。

foreach (ListItem li in listTitles)
{
   if (li.Selected)
   {
     selectedValue += li.Value + ",";
   }
}

これにより、選択リストから選択された値の文字列が得られます。jQueryから取得するのに問題があります。私が行った場合

var titles = $("#MainContent_selectListTitles").val() 

選択したリスト アイテムが返されないため、これは明らかに正しくありません。オプションが選択されていると言えば、それを取得できることを示唆する投稿を見ました。だから私はこれを試しました:

var titles= $('#MainContent_selectListTitles option:selected');

次に行ったのは、アラートをポップしてタイトルを確認することでした。[オブジェクト、オブジェクト]とだけ言いました。

だから私の質問は:

  1. リストアイテムコレクションから選択したアイテムを文字列に連結することは可能ですか?

  2. それとも、コード ビハインドでもポストバックからすべてのフォーム値を取得してから、jquery 関数を呼び出す方がよいでしょうか? これがオプションである場合、私はこれを試みましたが失敗しました。メソッドが見つからないことがわかります。したがって、ボタンイベントのポストバックでjquery関数を正しく呼び出していません。

ありがとう。

4

2 に答える 2

1

アラートに[object、object]が含まれているのは驚きではありません。これは、選択したアイテムの配列(実際には、2つのアイテムが選択されている)があり、アラートによって配列が[object、object]として表示されたためです。結構です。

次のhtmlマークアップを使用する:

    <div>
        <select multiple="multiple" id="mySelect">
            <option value="test1" selected="selected">Test 1</option>
            <option value="test2">Test 2</option>
            <option value="test3" selected="selected">Test 3</option>
        </select>
    </div>

そして、次のスクリプト:

<script type="text/javascript">
    $.ready = function () {
        var selectedItems = $("#mySelect option:selected");
        for (var i = 0; i < selectedItems.length; i++) {
            alert("The value is: "+selectedItems[i].value + "; the text is: "+selectedItems[i].text);
        }
    }
</script>

おそらくあなたの問題を解決するでしょう。

実際、データを手動でバインドするのは非常に面倒です。knockout.jsなどの最新のMVVMライブラリを確認することをお勧めします。例: http: //knockoutjs.com/examples/controlTypes.html

于 2012-05-07T00:40:05.513 に答える
0

まず、クライアント側のアイテムIDが「MainContent_selectListTitles」であることを確認します。「ソースの表示」で確認できます。

IDが正しい場合は、これに従ってください。

    $('#MainContent_selectListTitles').change(function () {
         var str = "";
         $('#MainContent_selectListTitles option:selected').each(function () {
              str += $(this).text() + " ";
              //pass str value to your web service here.
         });
    }).trigger('change');

変更があるたびに、この関数が呼び出されます。これは、Webサービスをビジーにすることを意味します。必要に応じて、上記のコードをボタンクリックイベントに移動できます。

于 2012-05-07T00:39:00.100 に答える