我有一个 HTML 表单要求用户输入。 javascript 函数用于验证表单,应该在执行 PHP 代码之前触发(使用 onsubmit)。 (头文件中引用了 js 文件 <script type="text/javascript" src="js/javascript.js"></script> )
但是 javascript 永远不会执行,而是执行 PHP 代码并(正确地)包含新文件。
如何让 javascript 按要求执行?
HTML 文件:
<form name="details" action="" method="post"
onSubmit="return ValidateForm(details);">
...
<input type="submit" name="post-this-form" value="Next"/>
</form>
PHP 文件:
if (isset($_POST['post-this-form']) and
$_POST['post-this-form'] == 'Next')
{
...
some php
...
include 'shipping-details.html.php';
exit();
}
编辑
这是请求的javascript。它已经过测试并且在不涉及任何 PHP 的情况下工作。通过 details (表单的名称)我正在使所有表单字段都可访问。
function ValidateForm(details)
{
var firstName=document.forms.details.firstName.value;
var lastName=document.forms.details.lastName.value;
var streetAddress=document.forms.details.streetAddress.value;
var town=document.forms.details.town.value;
var city=document.forms.details.city.value;
var zip=document.forms.details.zip.value;
var country=document.forms.details.country.value;
var creditCard=document.forms.details.creditcard.value;
...
//Checks firstName
if ((firstName=="")||(!firstName.match(alphabetExpression)))
{
alert ("Invalid first name, please re-enter");
return false;
}
...
//Checks creditCard
if ((creditCard=="")||(!creditCard.match(numericExpression))||(creditCardLength!=16))
{
alert ("Invalid credit card entry, please re-enter");
return false;
}
}// end function
编辑 2
我添加了 alert ("Hi");到 javascript 的开头,警报从未出现,这让我认为该函数根本没有执行。
编辑 3
我最初怀疑这个问题可能是由 PHP 引起的,但我是错误的。正如 Jason 在他的评论中提到的,问题出在 javascript 本身。这是一个有点奇怪的想法,因为相同的 javascript 代码在没有 PHP 的情况下在我的本地机器上“独立”工作。需要考虑的因素太多了...感谢大家花时间看我的问题!
最佳答案
关于您尝试构建的函数,您必须了解以下几点
function ValidateForm() {
this; // this contains the form name no need for any variable declaration
return true; // or false This is very important to continue the execution
// false stops the submittion
}
当您解决这两个问题时,它应该可以正常工作。
关于未执行带有 javascript onsubmit 的 PHP 和 HTML 表单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10110820/
我在使用omniauth/openid时遇到了一些麻烦。在尝试进行身份验证时,我在日志中发现了这一点:OpenID::FetchingError:Errorfetchinghttps://www.google.com/accounts/o8/.well-known/host-meta?hd=profiles.google.com%2Fmy_username:undefinedmethod`io'fornil:NilClass重要的是undefinedmethodio'fornil:NilClass来自openid/fetchers.rb,在下面的代码片段中:moduleNetclass
我想将html转换为纯文本。不过,我不想只删除标签,我想智能地保留尽可能多的格式。为插入换行符标签,检测段落并格式化它们等。输入非常简单,通常是格式良好的html(不是整个文档,只是一堆内容,通常没有anchor或图像)。我可以将几个正则表达式放在一起,让我达到80%,但我认为可能有一些现有的解决方案更智能。 最佳答案 首先,不要尝试为此使用正则表达式。很有可能你会想出一个脆弱/脆弱的解决方案,它会随着HTML的变化而崩溃,或者很难管理和维护。您可以使用Nokogiri快速解析HTML并提取文本:require'nokogiri'h
我得到了一个包含嵌套链接的表单。编辑时链接字段为空的问题。这是我的表格:Editingkategori{:action=>'update',:id=>@konkurrancer.id})do|f|%>'Trackingurl',:style=>'width:500;'%>'Editkonkurrence'%>|我的konkurrencer模型:has_one:link我的链接模型:classLink我的konkurrancer编辑操作:defedit@konkurrancer=Konkurrancer.find(params[:id])@konkurrancer.link_attrib
在我的Controller中,我通过以下方式在我的index方法中支持HTML和JSON:respond_todo|format|format.htmlformat.json{renderjson:@user}end在浏览器中拉起它时,它会自然地以HTML呈现。但是,当我对/user资源进行内容类型为application/json的curl调用时(因为它是索引方法),我仍然将HTML作为响应。如何获取JSON作为响应?我还需要说明什么? 最佳答案 您应该将.json附加到请求的url,提供的格式在routes.rb的路径中定义。这
我遵循了教程http://gettingstartedwithchef.com/,第1章。我的运行list是"run_list":["recipe[apt]","recipe[phpap]"]我的phpapRecipe默认Recipeinclude_recipe"apache2"include_recipe"build-essential"include_recipe"openssl"include_recipe"mysql::client"include_recipe"mysql::server"include_recipe"php"include_recipe"php::modul
所以我在关注Railscast,我注意到在html.erb文件中,ruby代码有一个微弱的背景高亮效果,以区别于其他代码HTML文档。我知道Ryan使用TextMate。我正在使用SublimeText3。我怎样才能达到同样的效果?谢谢! 最佳答案 为SublimeText安装ERB包。假设您安装了SublimeText包管理器*,只需点击cmd+shift+P即可获得命令菜单,然后键入installpackage并选择PackageControl:InstallPackage获取包管理器菜单。在该菜单中,键入ERB并在看到包时选择
我有一个服务模型/表及其注册表。在表单中,我几乎拥有服务的所有字段,但我想在验证服务对象之前自动设置其中一些值。示例:--服务Controller#创建Action:defcreate@service=Service.new@service_form=ServiceFormObject.new(@service)@service_form.validate(params[:service_form_object])and@service_form.saverespond_with(@service_form,location:admin_services_path)end在验证@ser
我在用Ruby执行简单任务时遇到了一件奇怪的事情。我只想用每个方法迭代字母表,但迭代在执行中先进行:alfawit=("a".."z")puts"That'sanalphabet:\n\n#{alfawit.each{|litera|putslitera}}"这段代码的结果是:(缩写)abc⋮xyzThat'sanalphabet:a..z知道为什么它会这样工作或者我做错了什么吗?提前致谢。 最佳答案 因为您的each调用被插入到在固定字符串之前执行的字符串文字中。此外,each返回一个Enumerable,实际上您甚至打印它。试试
我正在使用Rails构建一个简单的聊天应用程序。当用户输入url时,我希望将其输出为html链接(即“url”)。我想知道在Ruby中是否有任何库或众所周知的方法可以做到这一点。如果没有,我有一些不错的正则表达式示例代码可以使用... 最佳答案 查看auto_linkRails提供的辅助方法。这会将所有URL和电子邮件地址变成可点击的链接(htmlanchor标记)。这是文档中的代码示例。auto_link("Gotohttp://www.rubyonrails.organdsayhellotodavid@loudthinking.
如何检查Ruby文件是否是通过“require”或“load”导入的,而不是简单地从命令行执行的?例如:foo.rb的内容:puts"Hello"bar.rb的内容require'foo'输出:$./foo.rbHello$./bar.rbHello基本上,我想调用bar.rb以不执行puts调用。 最佳答案 将foo.rb改为:if__FILE__==$0puts"Hello"end检查__FILE__-当前ruby文件的名称-与$0-正在运行的脚本的名称。 关于ruby-检查是否