我有一个包含多个文本区域的表单。
<textarea name="datasetname_1" cols="40" rows="5" id="datasetname_1" class="validate[required] text-input"></textarea><br>
<textarea name="datasetname_2" cols="40" rows="5" id="datasetname_2" class="validate[required] text-input"></textarea><br>
<textarea name="datasetname_3" cols="40" rows="5" id="datasetname_3" class="validate[required] text-input"></textarea><br>
我想用破折号替换任何包含逗号的文本。这适用于直接在文本区域中粘贴的文本或粘贴的文本。在提交表单之前应该替换文本。我怎样才能用jquery或javascript来完成这个?
我试过这个
$("#formID").submit(function() {
$("textarea").each(function() {
($(this).val().replace(',','-'));
});
});
没有运气。
答案 0 :(得分:5)
$(this).val().replace(',','-');
将获取值,用连字符替换一个逗号,然后不执行任何操作,因为您没有将值存储到变量中。
相反,您可以使用:
$(this).val('some value');
实际设置值。例如:http://jsfiddle.net/pimvdb/HsFbN/。
$("#formID").submit(function() {
$("textarea").each(function() {
$(this).val($(this).val().replace(/,/g, "-"));
});
});
jQuery是否应该用于所有内容是有争议的,但你也可以在这里省略它:
$("#formID").submit(function() {
$("textarea").each(function() {
this.value = this.value.replace(/,/g, "-");
});
});
答案 1 :(得分:1)
可以试试这个:
$("textarea").each(function(){
var text = $(this).val();
$(this).val($(text).replace(',','-'));
});
答案 2 :(得分:1)
$(this).val().replace(',','-')
只获取值并返回包含替换文本的字符串。但它不会将分配到任何地方。你想要的可能就是:
// jQuery
$textarea = $(this); // just so we don't build a jQuery object twice
$textarea.val($textarea.val().replace(/,/g, "-"));
// vanilla JS
this.value = this.value.replace(/,/g, "-");
也就是说,如果这是一个重要的转换,您还需要确保接收该输入检查的页面,并确保已替换逗号。在您提交之前,JS验证非常适合清理,只需确保您有后备。