我想要这样的JSP:
<form id="form1">
Name is: <%=request.getParameter("name") %>
<a href="#" onclick="fun1('<%=request.getParameter("name") %>')">Show Email Form</a>
</form>
<form id="form2">
<input type="text" name="emailid" />
<a href="#" onclick="fun2('$('input[name=emailid]').val()', <name required here>)">Submit</a>
</form>
我的javascript是这样的:
function fun1() {
//Nothing important here, just show second form
$('#form2').show();
}
function fun2(myemail, myname) {
//Do something important here,
//Like update email for the given name
xmlhttp = GetXmlHttpObject();
var url = "updateEmail.do?email=" + myemail + "&name=" + myname;
xmlhttp.open("POST", url, true);
}
此处需要注意的事项:
1)我的表单没有任何操作,我通过Ajax提交第二个表单
2)我需要有两种不同的形式,第一种形式除了Name之外还有更多元素。除了电子邮件之外,第二种形式还有另一组不同的元素。 form2中只有一个函数(fun2)需要来自form1的名称参数和来自form2的电子邮件ID
3)Form1具有不可编辑的名称参数,form2具有可编辑的电子邮件参数。 form2中的onclick函数使用jQuery获取电子邮件文本输入
4)要考虑的另一个场景是form1中是否有多个名称条目,如使用循环的名称列表。例如,
<form id="form1">
<logic:iterate id="record" name="peoplerecords" property="records">
Name is: <bean:write name="record" property="name">
<a href="#" onclick="fun1('<bean:write name="record" property="name">')">Show Email Form</a>
</logic:iterate>
</form>
将form1中的name参数写入form2中的javascript onclick url的最佳方法是什么?
form1: - onclick =“fun1(name);”
form2: - onclick =“fun2(电子邮件,姓名);”
答案 0 :(得分:1)
您可以直接将名称放入JSP:
<a href="#" onclick="fun2($('input[name=emailid]').val(), <%=request.getParameter("name") %>)">Submit</a>
或者你可以给包含名称的dom节点一个id并使用jQuery访问它
Name is: <span id="nameNode"><%=request.getParameter("name") %></span>
<a href="#" onclick="fun2($('input[name=emailid]').val(), $('#nameNode').innerHTML)">Submit</a>
还要考虑直接在函数中获取所需的参数,或者在脚本部分中定义onclick处理程序,以避免代码变得混乱。注意HTML属性中的引号,在第二个onclick处理程序中使用了两次单引号。
答案 1 :(得分:0)
请勿在您的HTML模型中添加“数据”。
如果您使用的是服务器端语言,请将所有数据直接传递到内联脚本,而不是内联HTML。
示例:
<a onclick="alert('<?php echo $the_string;?>');">alert!</a>
VS
<a id="alert_link">alert!</a>
<script type="text/javascript">
var the_string = <?php echo json_encode($the_string);?>; // you get javascript safe encoding with json_encode, almost for free!
document.getElementById("alert_link").onclick = function () {
alert(the_string);
};
</script>
第二个例子可能看起来更多代码,但如果你有很多这样的东西,它真的会得到回报。
此时,您的所有数据都以JavaScript形式提供,因此应该很容易将它们组合在一起。
答案 2 :(得分:0)
因为您的名称值是从服务器写入的(在JSP中),您可以直接将它写入您的fun2调用吗?
onclick="fun2('$(\'input[name=emailid]\').val()', '<%=request.getParameter("name") %>')"