在我的 JSP 页面上,我用一个从我的控制器模型中获取值的变量定义了一些 javascript:
<!-- checkout.jsp excerpt -->
<script type="text/javascript">
var form = {};
form.checkout = {
"firstName" : ${checkoutForm.firstName}, // John
"lastName": ${checkoutForm.lastName} // Doe
};
</script>
<script type="text/javascript" src=SOME_DOMAIN/static/js/checkout.js"></script>
在同一页面上,我包含了一个 js 文件(checkout.js),它将弹出一个表单来更改页面上的这些值。
// Somewhere in "checkout.js"
var billingStr = form.checkout.firstName + ' ' + form.checkout.lastName;
$("#billing-info-Modal").find(".modal-footer").find(".btn-primary").click(function(e){
var formBody = $("#billing-checkoutForm");
// 3. update the js literal object on the page
// alert(billingStr); result John Doe
form.checkout.firstName = $(formBody).find("#billing-firstname").val(); // Peter
form.checkout.lastName = $(formBody).find("#billing-lastname").val(); // Grimes
// alert(form.checkout.firstName + ' ' + form.checkout.lastName); // Peter Grimes
// alert(billingStr); result John Doe still!!
// 4. update Billing address section
$('#billingAddress').find('p').html(billingStr);
// 5. close the modal
$("#billing-info-Modal").modal('hide');
e.preventDefault();
});
这是我的模态形式的摘录:
<div class="modal hide" id="billing-info-Modal">
<table id="billingTable">
<tr class="required">
<td><label for="billing-firstname">First Name <span>*</span></label></td>
<td><form:input id="billing-firstname"
path="bFirstName" cssClass="textField" /> <form:errors
path="bFirstName" cssClass="errors" /></td>
</tr>
<tr class="required">
<td><label for="billing-lastname">Last Name <span>*</span></label></td>
<td><form:input id="billing-lastname"
path="bLastName" cssClass="textField" /> <form:errors
path="bLastName" cssClass="errors" /></td>
</tr>
</table>
<div class="modal-footer">
<a href="#" class="btn" data-dismiss="modal">Close</a>
<a href="#" class="btn btn-primary">Save changes</a>
</div>
页面的基本功能:
我会在页面加载时附加带有表单文字的 ap 标签
用户将单击一个按钮,该按钮会弹出一个带有可以更改名字和姓氏的表单的模式。
- 当用户单击模式上的“保存更改”时,将 form.checkout.firstName 和 form.checkout.lastName 设置为新值。我打算使用 form.checkout 作为稍后提交的对象。所以准确性很重要。
- 我想用更新的名字和姓氏更新 p 标签
- 关闭模态。
也许我很困惑。我想我可以通过设置它的字段来更新一个 js 文字对象,例如 form.checkout.firstName = "something"。我错了吗?我可以看到我的函数内部的变量正在发生变化,但它不会影响外部的变量。我认为一旦在页面中声明为 var 的变量具有全局范围。因此,它可以在页面的任何位置进行操作。我也错了吗?
任何见解将不胜感激!!!提前致谢。