【发布时间】:2011-08-01 16:45:25
【问题描述】:
我花了一些时间阅读 jquery 文档和其他问题。我一生都无法弄清楚我做错了什么。只需将页面放在一起并加载页面,我就可以正常工作。但是当我通过 Ajax 加载代码时它不起作用。我阅读了其他一些有类似问题的人,每个人都说使用.live,但这对我也不起作用。我做错了什么?
我正在尝试修改表单 enctype,以便在选中某个框时不会上传文件。
这是通过 ajax 加载的表单:
<form id="RequestForm" enctype="multipart/form-data" method="post" action="/submit">
Input File: <input name="inputFile" value="" id="inputFile" type="file">
<input name="onDrive" id="change_form" value="1" type="checkbox"> Located on drive
</form>
我也有这个代码。它应该放在原始页面上还是可以放在通过 ajax 加载的内容中?我该怎么做才能使它与加载的内容一起工作,所以当 change_form 复选框被选中时,它会更新<form enctype>?
<script>
$(document).ready(function(){
$('#change_form').click(function() {
if($('#change_form').is(":checked")){
// update the apply button to enabled
$('form#RequestForm').removeAttr('enctype');
} else {
$('form#RequestForm').attr('enctype', 'multipart/form-data');
}
});
});
</script>
更新:为了清楚起见,加载了一个 HTML 页面。然后上面列出的 FORM 根据用户的选择通过 AJAX 加载。我还将表单和脚本添加到 AJAX 加载的内容中,以便在调用 AJAX 事件以加载它之后将其添加到 HTML 页面中。
这里有更多代码的小解释http://pastebin.com/GbWkukQu
【问题讨论】:
-
一件事,只使用#RequestForm 而不是form#RequestForm,不确定这是否会导致您的问题。
-
是什么让你说使用“.live()”来设置事件处理程序不起作用?它当然应该。
-
它可能有效。但我无法让它工作。这就是我在这里寻求建议的原因。我已将
alert('clicked')放入点击事件中,因此我可以看到它正在工作并且它不会“提醒”。 -
你在为
$('#change_form').live("click", function() { ... });进行实时绑定吗? -
是的。我试过了,它仍然没有用。我需要删除
$(document).ready(function(){吗?