jQuery-将表单复制到相同的表单
jQuery - Copying form to identical form
我想将一个现有表单复制到另一个表单。我发现这个问题适用于正常输入,但它在我的复选框上抛出了一个错误
我使用的jQuery函数是
(function($) {
$.fn.copyNamedTo = function(other) {
return this.each(function() {
$(':input[name]', this).each(function() {
$('[name=' + $(this).attr('name') +']', other).val($(this).val())
})
})
}
}(jQuery));
错误为:
Uncaught Error: Syntax error, unrecognized expression: [name=cartype[]]
复选框的排列方式如下:
<input type="checkbox" name="cartype[]" id="cartype_10" value="10">4x4
<input type="checkbox" name="cartype[]" id="cartype_11" value="11">Saloon
我想这是由于名称中的[]
,但不知道该怎么办。
您必须将名称中的[
和]
替换为''[
和'']
(如下所示),因为(正如您所知)它们在jQuery选择器中具有特殊含义。
$('[name=' + $(this).attr('name').replace(/(['[']])/g, '''''$1') +']', other).val($(this).val())
请注意,从技术上讲,您还应该有一个形式为$('[name="val"]')
的选择器(注意属性值周围的引号)。jQuery对此似乎一直很宽容,但它符合文档。
要确定复选框和单选按钮,需要设置它们的checked
属性,而不是更改值。您可以将您的功能更改为此;
$.fn.copyNamedTo = function(other) {
return this.each(function() {
$(':input[name]', this).each(function() {
var target = $('[name=' + $(this).attr('name').replace(/(['[']])/g, '''''$1') +']', other);
// Radios have the same name as each other, so filter based on value
// Checkboxes are in the same boat here due to the naming conventions shown in the OP.
if ($(this).is(':checkbox, :radio')) {
target.filter('[value="' + this.value + '"]').prop('checked', this.checked);
} else {
target.val($(this).val());
}
})
})
}
尝试使用data
属性。
data-name="cartype[]"
并使用:$(this).data('name')
相关文章:
- JavaScript”;复制“;HTML表单
- jQuery-将表单复制到相同的表单
- 如何通过 JS 将内容从一个表单中的一个文本框复制到另一个表单中的另一个文本框
- 动态添加/复制表单时绑定到表单提交事件
- 复制表单输入字段'提交前的s值
- 从php中的mysql中复制带有嵌入式下拉列表的html表单javascript
- 如何找到表单中的所有输入字段,并使用Javascript将它们的值复制到文本区域
- 正在复制验证表单
- 两个表单,一个选择/下拉框-需要将选择值从一个表单复制到另一个表单
- 将html输入文件元素从一个表单复制到另一个表单
- 将表单复制到Backbone.js模型
- 在选择带有选择和复选框的表单的复制完整字段集上
- 将表行数据复制到 html 中的表单
- Jquery:在检查最后一个字母时将文本从表单复制到 DIV
- 将输入的值从一个表单复制到另一个表单(表单和输入名称相同)
- 如何将复选框表单字段从一个表单复制到另一个
- 将表单复制到Outlook
- 将一个工作的jQuery表单复制到另一个位置,但只复制原来的工作
- 将数据从一个表单复制到多个表单
- 从一个表单复制数据,并使用jQuery或Javascript将其粘贴到多个表单中