フィールド値の先頭と末尾にあるスペースを削除するユニバーサル コードがあります。
var fieldValue = $('#'+fieldName).val().replace(/\s+$/g, '');
ただし、<select multiple="multiple"
フィールドが渡された場合は失敗します。
このようなフィールドをバイパスするユニバーサル コードを使用できますか?
フィールド値の先頭と末尾にあるスペースを削除するユニバーサル コードがあります。
var fieldValue = $('#'+fieldName).val().replace(/\s+$/g, '');
ただし、<select multiple="multiple"
フィールドが渡された場合は失敗します。
このようなフィールドをバイパスするユニバーサル コードを使用できますか?
選択されているかどうかに関係なく、すべてのオプションの値と内部テキストの両方を変更する場合:
<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() );
}
}
要素の場合、.val()
メソッドは選択された各オプションを含む配列を返します。オプションが選択されていない場合は、null を返します。
$('#'+fieldName).val()
配列を<select multiple>
返す
あなたが使用することができます
var value = $.map( $('#'+fieldName).val(), function (opt) {
return $.trim(opt);
} );