我有一系列Form元素,每个元素都有不同的名称,我将发布一个作为示例。我无法将名称硬编码到Jquery中,因为除非我检查元素,否则我不会知道名称。
除此之外,还有一个元素:
<label class="checkbox">
<input type="checkbox"
name="aisis_options[package_Aisis-Related-Posts-Package-master]"
value="package_Aisis-Related-Posts-Package-master" checked="" />
Aisis-Related-Posts-Package-master
<a href="#">(Disable)</a>
</label>
问题是这样做:
点击disable,获取这个元素的名称,然后做两件事,一是如果元素被选中(在本例中不是),二是将名称传递给php变量,然后php变量可以进行处理。
我该怎么做?Jquery不是我的强项。
下面是一个不了解更多代码的示例:
$(function () {
$('input:checkbox').click(function () {
$(this).prop('disabled', true);
var iName = this.name;
$.ajax({
url: "file.php",
data: {
'inputname': iName
},
success: function (data) {
alert(data.returned_val);
}
})
})
})
此处演示
如果你想直接通过名称到达输入,你需要使用双后拉来转义方括号,并通过名称到达该输入。用途:
$('input[name=aisis_options''[package_Aisis-Related-Posts-Package-master'']]')
您可以添加带有复选框的onchangeonchange="f(this);"
在jsf()函数中,您可以使用this.name来获取名称,使用this.value来获取值等,并可以随心所欲。
要检查/取消锁定,可以像这样使用$element.prop('checked', true/false);
(fiddle):
HTML
<input
type="checkbox"
name="aisis_options[package_Aisis-Related-Posts-Package-master]"
value="...."
checked="checked"
/> Aisis-Related-Posts-Package-master
<a href="#" class="trigger">(Disable)</a>
JS
$('.trigger').click (function () {
closest_checkbox = $(this).siblings('input[type=checkbox]');
closest_checkbox.prop('checked', !closest_checkbox.prop('checked'));
});
JS第2部分:AJAX
您可以使用jQuery插件serializeObject构建一个包含所有name:value
组合的对象,您的表单提交事件处理程序将类似于:
$('form').submit( function (e) {
// Prevent the form from being sent normally since we want it ajaxified
e.preventDefault();
// Send request to php page
$.ajax({
type: "POST",
url: "some.php",
data: $('form').serializeObject() // <== Magic happens here
});
});
PS。不要忘记包含serializeObject插件并为表单提供唯一的id,$('#unique_id')
比$('form')
要好得多,后者将匹配页面中的所有表单。
要获取name属性的值,可以使用:
$(this).attr('name');