- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在向现有的 Drupal 7 站点添加一些功能,并且不得不丢弃一个可用的 webforms 表单,因为无法添加一些必需的功能。我已经用生成页面并向用户显示个人资料更新表单的自定义模块替换了内置的网络表单。当我提交表单时,表单似乎提交了两次,而第一次在 Firefox JS 控制台中似乎出现错误。我已经做了很多阅读和测试,但我不明白这里发生了什么。
可以在以下位置查看此表单
http://www.tztesting.com/userprofile
要尝试使用此表单,您必须登录该站点,因为表单提交会调用许多需要身份验证的 API。测试用户名为web@tz.net,测试密码为abcd1234
表单的html和JS如下
<div class="panel-pane pane-block profile-top profile-edit">
<div class="pane-content">
<div class="update_message"></div>
<form accept-charset="UTF-8" id="profile_edit" method="post" action="" enctype="multipart/form-data" class="webform-client-form "><div><div class="form-item webform-component webform-component-markup webform-component--form-title">
<p>Change Account Details</p>
</div>
<div class="form-item webform-component webform-component-textfield webform-component--first-name webform-container-inline">
<label for="edit-submitted-first-name">First name <span title="This field is required." class="form-required">*</span></label>
<input type="text" maxlength="128" size="60" value="Test" name="submitted[first_name]" id="edit-submitted-first-name" class="form-control form-text firstname">
</div>
<div class="form-item webform-component webform-component-textfield webform-component--last-name webform-container-inline">
<label for="edit-submitted-last-name">Last name <span title="This field is required." class="form-required">*</span></label>
<input type="text" maxlength="128" size="60" value="User" name="submitted[last_name]" id="edit-submitted-last-name" class="form-control form-text lastname">
</div>
<div class="form-item webform-component webform-component-textfield webform-component--mobile-no webform-container-inline">
<label for="edit-submitted-mobile-no">Mobile no. <span title="This field is required." class="form-required">*</span></label>
<input type="text" maxlength="128" size="64" value="85112366" name="submitted[mobile_no]" id="edit-submitted-mobile-no" class="form-control form-text number">
</div>
<div class="form-item webform-component webform-component-textfield webform-component--postal-code webform-container-inline">
<label for="edit-submitted-postal-code">Postal Code <span title="This field is required." class="form-required">*</span></label>
<input type="text" maxlength="128" size="64" value="408600" name="submitted[postal_code]" id="edit-submitted-postal-code" class="form-control form-text postcode" onkeyup="getaddress();">
</div>
<div class="form-item webform-component webform-component-textfield webform-component--building-name webform-container-inline">
<label for="edit-submitted-building-name">Building name </label>
<input type="text" maxlength="128" size="60" value="SINGAPORE POST CENTRE" name="submitted[building_name]" id="edit-submitted-building-name" class="form-control form-text building_name">
</div>
<div class="form-item webform-component webform-component-textfield webform-component--street-name webform-container-inline">
<label for="edit-submitted-street-name">Street name </label>
<input type="text" maxlength="128" size="60" value="10 EUNOS ROAD 8" name="submitted[street_name]" id="edit-submitted-street-name" class="form-control form-text street_name">
</div>
<div class="form-item webform-component webform-component-textfield webform-component--unit-number webform-container-inline">
<label for="edit-submitted-unit-number">Unit number </label>
<input type="text" maxlength="128" size="64" value="122" name="submitted[unit_number]" id="edit-submitted-unit-number" class="form-control form-text unit_number">
</div>
<div class="form-item webform-component webform-component-checkboxes webform-component--tc-acknowlegement">
<label for="edit-submitted-tc-acknowlegement" class="element-invisible">T&C acknowlegement <span title="This field is required." class="form-required">*</span></label>
<div class="form-checkboxes" id="edit-submitted-tc-acknowlegement"><div class="form-type-checkbox form-item-submitted-tc-acknowlegement-y form-item checkbox">
<label for="edit-submitted-tc-acknowlegement-1"><input type="checkbox" class="form-checkbox" value="acknowlegement" name="submitted[tc_acknowlegement]" id="edit-submitted-tc-acknowlegement-1"> I acknowledge and accept the <a href="/privacy_policy" target="_blank">Privacy Policy</a>, <a href="/terms_of_use" target="_blank">Website Terms of Use</a> and <a href="/popstation-terms-conditions" target="_blank">POPStation T&C</a> </label>
</div>
</div>
</div>
<div class="form-item webform-component webform-component-checkboxes webform-component--information-acknowledgement">
<label for="edit-submitted-information-acknowledgement" class="element-invisible">Information acknowledgement </label>
<div class="form-checkboxes" id="edit-submitted-information-acknowledgement"><div class="form-type-checkbox form-item-submitted-information-acknowledgement-y form-item checkbox">
<label for="edit-submitted-information-acknowledgement-1"><input type="checkbox" class="form-checkbox" value="y" name="submitted[information_acknowledgement][y]" id="edit-submitted-information-acknowledgement-1"> I consent to the collection, use and disclosure of my personal data by the SingPost Group for the purposes of marketing products or services offered by the SingPost Group. </label>
</div>
</div>
</div>
<button type="submit" value="Confirm" name="op" class="webform-submit button-primary btn btn-primary form-submit">Confirm</button>
</div>
</form>
</div>
</div>
<script type="text/javascript">
(jQuery)(".form-submit").click(function(){
var arr = {
"FirstName": jQuery(".firstname").val(),
"LastName": jQuery(".lastname").val(),
"ContactNumber": jQuery(".number").val(),
"PostCode": jQuery(".postcode").val(),
"BuildingName": jQuery(".building_name").val(),
"StreetName": jQuery(".street_name").val(),
"UnitNumber": jQuery(".unit_number").val()
};
var out_arr = JSON.stringify(arr);
var update = (jQuery).ajax({
url: "/userprofile?update=" + out_arr,
method: "POST",
async: "true"
});
update.done(function (json) {
objects_update = JSON.parse(json);
if (objects_update.Success) {
var html = "<h3>Your profile has been updated</h3>";
(jQuery)(".update_message").html(html);
}
});
/**************/
alert("done");
/*************/
});
function getaddress() {
var postcode = jQuery(".postcode").val();
if (postcode.length == 6) {
var address = (jQuery).ajax({
url: "/userprofile?edit=" + postcode,
method: "POST",
async: "true"
});
address.done(function( json ) {
objects_address = JSON.parse(json);
if (objects_address.Success) {
var code = objects_address.Address.PostalCode;
var street_name = objects_address.Address.StreetName;
var building_name = objects_address.Address.BuildingName;
var building_no = objects_address.Address.BuildingNo;
jQuery( ".building_name" ).val( building_name );
jQuery( ".street_name" ).val( building_no + " " + street_name );
}
});
}
}
</script>
在 Javascript 中有一个 alert("done");没有这个,提交就不起作用。当然不需要此警报。
如果您在提交表单时查看控制台,您会发现表单提交了两次,第一次点击警报(“完成”),而第二次提交似乎发生在警报(“完成”之前");
我想要的功能是,当/userprofile URL 被点击时,Drupal php 模块从 API 中提取当前数据并将其作为默认值推送到此表单中。当用户提交此表单时,PHP 模块接收作为序列化数组的值,处理它们并将新值发送到 API。提交后返回一个 JSON 字符串,如下所示
{"Success":true,"Data":{}}
一旦解析,我们检查的所有内容是成功值是否为真,如果它是一条消息,则在表单顶部的“更新消息”div 中可用。
如果有人可以查看此表格并让我知道我做错了什么,我将不胜感激,因为我一直在努力解决这个问题。
问候
理查德
最佳答案
您应该将 submit
事件与 form 绑定(bind),而不是绑定(bind)按钮的 click
事件。
此外,您需要使用 event.preventDefault();
取消默认提交,因为您正在使用 $.ajax()
提交表单。
所以把代码改成
jQuery("#profile_edit").submit(function(event){
event.preventDefault();
//Rest of existing code to submit form
});
代替
(jQuery)(".form-submit").click(function(){
});
关于带有 jQuery 提交的 Javascript 表单运行提交两次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34835959/
我想使用 li 和 ul 制作一个多级下拉列表,以便显示我博客中按年和月排序的所有文章。我希望我的下拉菜单看起来像 Google Blogspot 下拉菜单: 这是我的 CSS 和 HTML 代码 u
我在 Win 7 64 机器上将 CodeBlocks 与 gcc 4.7.2 和 gmp 5.0.5 结合使用。开始使用 gmpxx 后,我看到一个奇怪的段错误,它不会出现在 +、- 等运算符中,但
我正在使用 tern 为使用 CodeMirror 运行的窗口提供一些增强的智能感知,它工作正常,但我遇到了一个问题,我想添加一些自定义“types”,可以这么说,这样下拉列表中它们旁边就有图标了。我
我正在尝试让我的 PC 成为 Android 2.3.4 设备的 USB 主机,以便能够在不需要实际“附件”的情况下开发 API。为此,我需要将 PC 设置为 USB 主机和“设备”(在我的例子中是运
很难说出这里要问什么。这个问题模棱两可、含糊不清、不完整、过于宽泛或夸夸其谈,无法以目前的形式得到合理的回答。如需帮助澄清此问题以便重新打开,visit the help center . 关闭 9
我在设置服务器方面几乎是个新手,但遇到了一个问题。我有一个 Ubuntu 16.04 VPS 并安装了 Apache2 和 Tomcat7。我正在为 SSL 使用 LetsEncrypt 和 Cert
我在一个基于谷歌地图的项目上工作了超过 6 个月。我使用的是 Google Maps API V1 及其开发人员 API key 。当我尝试发布应用程序时,我了解到 Google API V1 已被弃
我是 Python 的新手,所以如果我对一些简单的事情感到困惑,请原谅。 我有一个这样的对象: class myObject(object): def __init__(self):
这个问题已经有答案了: How can I access object properties containing special characters? (2 个回答) 已关闭 9 年前。 我正在尝
我有下面的 CSS。我想要的是一种流体/液体(因为缺乏正确的术语)css。我正在为移动设备开发,当我改变模式时 从纵向 View 到陆地 View ,我希望它流畅。现在的图像 在陆地 View 中效
我正在尝试使用可以接受参数的缓存属性装饰器。 我查看了这个实现:http://www.daniweb.com/software-development/python/code/217241/a-cac
这个问题在这里已经有了答案: Understanding slicing (36 个答案) 关闭 6 年前。 以a = [1,2,3,4,5]为例。根据我的直觉,我认为 a[::-1] 与 a[0:
mysqldump -t -u root -p mytestdb mytable --where=datetime LIKE '2014-09%' 这就是我正在做的事情,它会返回: mysqldum
我正在制作销售税计算器,除了总支付金额部分外,其他一切都正常。在我的程序中,我希望能够输入一个数字并获得该项目的税额我还希望能够获得支付的总金额,包括交易中的税金。到目前为止,我编写的代码完成了所有这
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 我们不允许在 Stack Overflow 上提出有关通用计算硬件和软件的问题。您可以编辑问题,使其成为
我是否必须进行任何额外的设置才能让 apache-airflow 在任务失败时向我发送电子邮件。我的配置文件中有以下内容(与默认值保持不变): [email] email_backend = airf
这个问题在这里已经有了答案: What does the $ symbol do in VBA? (5 个回答) 3年前关闭。 使用返回字符串(如 Left)的内置函数有什么区别吗?或使用与 $ 相同
我有一个用VB6编写的应用程序,我需要使用一个用.NET编写的库。有什么方法可以在我的应用程序上使用该库吗? 谢谢 最佳答案 这取决于。您可以控制.NET库吗? 如果是这样,则可以修改您的库,以便可以
当我创建一个以 ^ 开头的类方法时,我尝试调用它,它给了我一个错误。 class C { method ^test () { "Hi" } } dd C.new.test; Too m
我已经使用 bower 安装了 angularjs 和 materialjs。 凉亭安装 Angular Material 并将“ngMaterial”注入(inject)我的应用程序,但出现此错误。
我是一名优秀的程序员,十分优秀!