我试图在另一个函数中调用一个函数,但它不起作用。
P.S我是JS的初学者
function my_autoload($class_name) {
if (is_file('CLASSES/' . $class_name . '.php')) {
require_once 'CLASSES/' . $class_name . '.php';
} else {
$matching_files = glob('ADMIN/TPL/*/' . $class_name . '.php');
if (count($matching_files) === 1) {
require_once $matching_files[0];
} else if (count($matching_files) === 0) {
trigger_error('Could not find class ' . $class_name . '!', E_USER_ERROR);
} else {
trigger_error('More than one possible match found for class ' . $class_name . '!', E_USER_ERROR);
}
}
}
spl_autoload_register("my_autoload");
答案 0 :(得分:3)
您需要使用bracket notation来访问具有变量名称的对象属性。
所以document.myForm.fieldid
(它尝试使用名称字面为fieldid
的表单元素)不正确,应为document.myForm[fieldid]
:
function validate() {
return madatorychk('name');
//This functions makes sure that madatory fields are filled
function madatorychk(fieldid) {
var node = document.myForm[fieldid];
if (node.value == "") {
alert("This field cannot be left empty");
document.myForm[fieldid].focus();
return false;
}
}
}
为此,请确保您已命名表单元素:
Name: <input type="text" name="name" />
最后,非常重要的是你需要返回madatorychk
的结果:
return madatorychk('name');
还有一件事。您可能不希望不仅允许空,而且还允许只有空格的用户名,因此在验证之前修剪输入:
if (node.value.trim() == "") {
alert("This field cannot be left empty");
document.myForm[fieldid].focus();
return false;
}
答案 1 :(得分:2)
您有一些错误:
name
(无)而不是"name"
"fieldid"
的财产,而不是名称位于fieldid
这是一个固定的代码:
function validate() {
return madatorychk("name"); // note the return and the "name"
function madatorychk (fieldid) {
var node = document.myForm[fieldid]; // note the [fieldid]
if (node.value == "" ) {
alert("This field cannot be left empty");
document.myForm[fieldid].focus() ;
return false;
}
}
}
答案 2 :(得分:0)
将函数声明放在validate函数之外。
Main
{
Start capturing.
Some operations, functions ect.
Stop capturing.
}
答案 3 :(得分:0)
嗯,以下内容对我有用:
<script>
// Form validation code will come here.
function validate()
{
madatorychk(name);
//This functions makes sure that madatory fields are filled
function madatorychk (fieldid) {
var node = document.querySelector('#name');
if (node.value == "" ) {
alert("This field cannot be left empty");
node.focus();
return false;
}
}
}
</script>
<form method="get" name="myForm" onsubmit="return validate();">
<label>Name: <input type="text" id="name"></label> </form>
</form>
我更改了onsubmit
属性的值,document.myForm.fieldid
不是有效的元素路径。
示例here。
答案 4 :(得分:0)
在JavaScript 1.2之前,只允许使用函数定义 顶级全局代码,但JavaScript 1.2允许函数定义 也可以嵌套在其他函数中。
仍有一个限制,可能不会出现功能定义 在循环或条件中。这些功能限制 定义仅适用于具有该函数的函数声明 言。
但仍然最好的方法是单独定义函数并在第一个函数中调用它,因为第二个函数是一个非常方便的函数,可以在其他地方使用。同时使用&#39; id&#39;识别表单而不是使用名称来执行此操作。并且将节点本身作为参数传递将帮助您对任何形式的任何节点使用相同的函数:
//This functions makes sure that mandatory fields are filled
function mandatoryChk(node) {
if (node.value == "" ) {
alert("This field cannot be left empty");
node.focus();
return false;
}
else
return true;
}
function validate() {
var Name = document.getElementById("myForm").elements['name'];
return mandatoryChk(Name);
}
并使用以下HTML:
<form method="get" onsubmit="validate();" id="myForm">
<label>Name: <input type="text" id="name" name="name"></label>
<input type='submit' value='Submit'/>
</form>
完成的更改列表: