晚上,
在PHP中使用foreach时,是否可以在受影响的输入字段中添加样式?我正在使用此代码来验证表单内的输入字段:
$errors = array();
$values = array();
$error_message = '';
if(isset($_POST['update'])){
foreach ($_POST as $key => $value) {
$values[$key] = trim(stripslashes($value)); // input filter
}
if (check_input($values['invoice_email']) == false) {
$errors['invoice_email'] = 'Please enter an email.';
} else if (!preg_match('/([\w\-]+\@[\w\-]+\.[\w\-]+)/', $values['invoice_email'])) {
$errors['invoice_email'] = 'Invalid email format.';
}
if (sizeof($errors) == 0) {
$values = array();
print 'Form is OK!';
} else {
foreach ($errors as $error) {
print $error_message .= $error . '<br />';
}
}
}
如果有人想看到这个功能,那么代码就是:
function check_input($input) {
if (strlen($input) == 0) {
return false;
} else {
// TODO: other checks?
return true;
}
}
编辑:
我忘了说我希望受影响的输入字段的边框为1px纯红色,以便用户可以轻松查看他们缺少哪些输入字段或遇到问题。
答案 0 :(得分:1)
您还可以使用HTML5选项required
,而无需触及您的功能。
示例:
<input type="text" name="name" required />
此外,使用包含<b></b>
变量的$error
标记在您的循环中加载样式表:
foreach ($errors as $error) {
echo '<link rel="stylesheet" href="style_errors.css" type="text/css">';
print $error_message .= '<b>' . $error . '</b>' . '<br />';
}
<强> CSS 强>
<head>
<style>
.error1x input {
border: 1px solid red;
}
input {
border: 1px solid green;
}
</style>
</head>
参考:
除此之外,你可以使用JS / jQuery和AJAX也是一个额外的选择。
这是另一种使用三元运算符的方法:
<input type="text" name="input1" class="error1 <?php echo empty($_POST['input1']) ? $_POST['input1'] : 'noerror' ?>" />
<style>
.error1 { border: 1px solid red; }
.noerror { border: 2px solid green; }
</style>
并使用相同的CSS类来处理输入错误。
您可以执行类似
的操作$errors['invoice_email'] = '<div class="error1">Please enter an email.</div>';
然后只需使用CSS。
示例:
<?php
...
if (check_input($values['invoice_email']) == false) {
$errors['invoice_email'] = '<div class="error1">Please enter an email.</div>';
}
...
?>
// inside the same file
<style>
.error1 { border: 1px solid red; }
.noerror {
background:#c0c0c0;
}
</style>
或从外部样式表加载
示例输入字段
<input type="text" name="email" class="noerror">
答案 1 :(得分:0)
使用PHP渲染后,你无法操纵DOM,你需要使用Javascript才能完成这项工作。
然而,如果您使用php创建表单,并且每次发布后总是重新加载。 例如:
echo "<form><input type='text' name='email' id='email'></input>.....</form>";
您可以轻松地在输入中放置您想要的任何属性,以便在发布帖子后使其看起来像您想要的那样。
示例:强> 页面重新加载后,使用您想要的属性打印输入元素。
echo "<input type='text' style='border-radius:1px solid red' name='n1' id='n1'></input>";
如果您没有使用PHP创建表单并且想要在不重新加载页面的情况下进行更改,那么唯一的方法是使用javascript。
javascript中的equivelant将是:
document.getElementById['n1'].style.border="1px solid red";
尽管仅凭这一点无法帮助你。您需要使用javascript进行所有验证才能实现此目的。