0

フィールド値の先頭と末尾にあるスペースを削除するユニバーサル コードがあります。

var fieldValue = $('#'+fieldName).val().replace(/\s+$/g, '');

ただし、<select multiple="multiple"フィールドが渡された場合は失敗します。

このようなフィールドをバイパスするユニバーサル コードを使用できますか?

4

4 に答える 4

1

select multiplesを指定すると、val()メソッドは文字列ではなく配列を返します(項目が選択されていない場合は、項目が選択されている場合は返されnullます)。

値から空白を削除する場合は、配列をループして(おそらくeach、またはjQueryを使用してmap)、各値に正規表現を順番に適用する必要があります。

于 2012-07-03T19:43:25.310 に答える
0

選択されているかどうかに関係なく、すべてのオプションの値と内部テキストの両方を変更する場合:

<select id="mySelect" multiple="multiple">
    <option name="1" value="Test 1 ">Test 1  </option>
    <option name="2" value=" Test 2">  Test 2</option>
    <option name="3" value=" Test 3 ">  Test 3  </option>
</select>


<script type="text/javascript">

    // Iterate through the individual option elements
    $("#mySelect option").each(function () {

        // "this" points to the option element encountered during the current iteration of .each()

        // Trim each text node (in between the <option> and </option> tags)
        // Using native JS String Object .trim()
        $(this).text( $(this).text().trim() );

        // Trim each value attribute
        $(this).val( $(this).val().trim()) });

    });

</script>

スクリプトを実行すると、次の HTML が取得され、選択されているかどうかに関係なく、フォーム送信/Ajax リクエストの前にすべてのデータが必要に応じてトリミングされることが保証されます。

<select id="mySelect" multiple="multiple">
    <option name="1" value="Test 1">Test 1</option>
    <option name="2" value="Test 2">Test 2</option>
    <option name="3" value="Test 3">Test 3</option>
</select>

これを普遍的にするには、要素が選択要素であるかどうかを確認するチェックを追加するか (その後、上記の .each() メソッドを実行します)、単一要素のテキストまたは値フィールドをトリミングするより単純な方法にデフォルト設定することができます。

function trimInputs(fieldId) {
    var el = $('#' + fieldId);

    if (el.prop('tagName') === 'SELECT') {
        $('#' + fieldId + ' option').each(function () {        
            $(this).val( $(this).val().trim()) });
            $(this).text( $(this).text().trim() );
        });
    } else {
        el.val( el.val().trim() );
        el.text( el.text().trim() );
   }
}
于 2012-07-03T20:21:01.740 に答える
0

要素の場合、.val()メソッドは選択された各オプションを含む配列を返します。オプションが選択されていない場合は、null を返します。

于 2012-07-03T19:43:59.040 に答える
0

$('#'+fieldName).val()配列を<select multiple>返す

あなたが使用することができます

var value = $.map( $('#'+fieldName).val(), function (opt) {
  return $.trim(opt);
} );
于 2012-07-03T19:47:05.327 に答える