在 PHP 表单验证后更改 img 属性并使用 jQuery 禁用输入
Change img attribute and disable inputs with jQuery after PHP form validation
我正在尝试更改图像元素的 'src',并在验证并提交表单后将输入元素的属性更改为 'readonly'。表单的验证发生在 PHP 中,因此我无法附加 on submit 事件处理程序,因为即使表单未通过验证它也会触发。如果没有某种插件,有没有办法做到这一点?
<html>
<head>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"> </script>
</head>
<body>
<script>
$(document).ready(function()
{
$("#button_img").click(function ()
{
alert("button clicked");
$("#course_name").css("background-color", "yellow");
$("#course_name").attr("readonly",true);
$("#button_img").attr('src','../images/edit_course.png');
});
});
</script>
<form id='design_course' action="<?php ($_SERVER['PHP_SELF']); ?>" method="post">
<label id="course_name_label">Course Name:</label>
<input type=text id="course_name" name="course_design_name" value="default">
<button id="create_course" type="submit" ><img id="button_img" src="../images/create_course.png"></button>
</form>
</body>
</html>
由于您为此使用的验证逻辑是服务器端的,因此页面将在重新加载期间发生变化。因此,您在 HTML 中有条件地设置值的逻辑将是服务器端。
您可以根据任何if
语句从PHP 有条件地输出到页面。您没有显示验证逻辑,但为了示例起见,我们假设如果验证通过,则有一个名为 $passedValidation
的布尔变量。然后你可以在你的代码中做这样的事情:
<?php if ($passedValidation) { ?>
<img id="button_img" src="../images/something_else.png">
<?php } else { ?>
<img id="button_img" src="../images/create_course.png">
<?php } ?>
所以请注意,如果形式 "passed validation" 那么使用的图像是 something_else.png
而不是 create_course.png
。因此,当页面在通过验证逻辑后重新加载时,用户将看到另一张图片。
其他 HTML 输出也可以这样做。如何组织它取决于您,因为为页面上的各种属性重复使用相同的 if/else
结构可能会变得很丑陋。也许您可以将两个完整的表格包裹在一个 if/else
块或类似的东西中。
另请注意,您需要 $passedValidation
的默认大小写 false
来处理首次加载页面且根本没有提交表单时的情况。
我正在尝试更改图像元素的 'src',并在验证并提交表单后将输入元素的属性更改为 'readonly'。表单的验证发生在 PHP 中,因此我无法附加 on submit 事件处理程序,因为即使表单未通过验证它也会触发。如果没有某种插件,有没有办法做到这一点?
<html>
<head>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"> </script>
</head>
<body>
<script>
$(document).ready(function()
{
$("#button_img").click(function ()
{
alert("button clicked");
$("#course_name").css("background-color", "yellow");
$("#course_name").attr("readonly",true);
$("#button_img").attr('src','../images/edit_course.png');
});
});
</script>
<form id='design_course' action="<?php ($_SERVER['PHP_SELF']); ?>" method="post">
<label id="course_name_label">Course Name:</label>
<input type=text id="course_name" name="course_design_name" value="default">
<button id="create_course" type="submit" ><img id="button_img" src="../images/create_course.png"></button>
</form>
</body>
</html>
由于您为此使用的验证逻辑是服务器端的,因此页面将在重新加载期间发生变化。因此,您在 HTML 中有条件地设置值的逻辑将是服务器端。
您可以根据任何if
语句从PHP 有条件地输出到页面。您没有显示验证逻辑,但为了示例起见,我们假设如果验证通过,则有一个名为 $passedValidation
的布尔变量。然后你可以在你的代码中做这样的事情:
<?php if ($passedValidation) { ?>
<img id="button_img" src="../images/something_else.png">
<?php } else { ?>
<img id="button_img" src="../images/create_course.png">
<?php } ?>
所以请注意,如果形式 "passed validation" 那么使用的图像是 something_else.png
而不是 create_course.png
。因此,当页面在通过验证逻辑后重新加载时,用户将看到另一张图片。
其他 HTML 输出也可以这样做。如何组织它取决于您,因为为页面上的各种属性重复使用相同的 if/else
结构可能会变得很丑陋。也许您可以将两个完整的表格包裹在一个 if/else
块或类似的东西中。
另请注意,您需要 $passedValidation
的默认大小写 false
来处理首次加载页面且根本没有提交表单时的情况。