我有一个表单,我想用它来添加条目。添加条目后,应重置原始表单以准备下一个条目,并且在重置之前应复制保存的表单并将其附加到“storedEntries”的div上。这很多工作(大部分),但我无法访问新创建的表单...我需要将提交按钮的值属性从“添加”更改为“编辑”,以便正确地传达点击该按钮应该是什么做。继承我的形式:
<div class="newTruck">
<form id="addNewTruck" class='updateschedule' action="javascript:sub(sTime.value, eTime.value, lat.value, lng.value, street.value);">
<b style="color:green;">Opening at: </b>
<input id="sTime" name="sTime" title="Opening time" value="Click to set opening time" class="datetimepicker"/>
<b style="color:red;">Closing at: </b>
<input id="eTime" name= "eTime" title="Closing time" value="Click to set closing time" class="datetimepicker"/>
<label for='street'>Address</label>
<input type='text' name='street' id='street' class='text' autocomplete='off'/>
<input id='submit' class='submit' style="cursor: pointer; cursor: hand;" type="submit" value='Add new stop'/>
<div id='suggests' class='auto_complete' style='display:none'></div>
<input type='hidden' name='lat' id='lat'/>
<input type='hidden' name='lng' id='lng'/>
</form>
</div>
香港专业教育学院尝试使用一百种不同的选择器与jquery无济于事...继承我的剧本:
function cloneAndClear(){
var id = name+now;
$j("#addNewTruck").clone(true).attr("id",id).appendTo(".scheduledTrucks");
$j('#'+id).filter('#submit').attr('value', 'Edit');
$j("#addNewTruck")[0].reset();
createPickers();
}
元素被正确克隆并插入到div中,但我无法找到访问此元素的方法......脚本中的第三行永远不会有效。
我遇到的另一个问题是克隆形式的'值'会恢复为html源代码中的值而不是用户输入的值。
关于如何解决这两个问题的建议非常感谢!
答案 0 :(得分:4)
我认为你想使用find
而不是filter
$j('#'+id).find('#submit')
这应该在实践中起作用,尽管你遇到了问题,因为有多个元素具有相同的id。我会更改您的HTML以使用类,或者在这种特定情况下,您不需要:
$j('#' + id).find(":submit")
答案 1 :(得分:1)
您是否尝试过使用.val()
?而不是.filter()
,请使用.find()
$j('#'+id).find(':submit').val('Edit');
答案 2 :(得分:0)
nickf解决方案有效。 (只是写了一段代码来检查)。请在jquery文档中检查过滤器的定义。
将匹配元素集合减少到与选择器匹配的元素或通过函数测试。
在这种情况下你使用了find。另外,如上所述,具有相同id的多个元素很麻烦,尤其是在进行dom操作时。最好选择合适的课程。