未选择下拉选项
Dropdown option not being selected
我有以下代码来构建下拉表单域:
if ($current_user->ID) {
$output .= '
<form action="" method="POST" class="profileForm" onSubmit="return validateMobile()">
<div class="formField">
<label for="tenant_title">Title</label>
<select name="tenant_title">
<option value="Mr"' . titleSelected('Mr') . '>
Mr
</option>
<option value="Miss"' . titleSelected('Miss') . '>
Miss
</option>
<option value="Mrs"' . titleSelected('Mrs') . '>
Mrs
</option>
<option value="Ms"' . titleSelected('Ms') . '>
Ms
</option>
</select>
</div>
以及检查数据库中已有内容的函数:
function titleSelected($value){
if ($tenant_details->tenant_title == $value) return 'selected';
return false;
}
问题是它总是默认为 'Mr',这是第一个选项,无论数据库中有什么。
我错过了什么?
我仍然是 php 的新手,所以请保持温柔...:)
而不是 selected
你应该 return selected="selected"
,像这样:
function titleSelected($value){
if ($tenant_details->tenant_title == $value) return 'selected="selected"';
return false;
}
<div class="formField">
<label for="tenant_title">Title</label>
<select name="tenant_title">
<option value="Mr" <?php echo titleSelected('Mr'); ?>>
Mr
</option>
<option value="Miss" <?php echo titleSelected('Miss'); ?>>
Miss
</option>
<option value="Mrs" <?php echo titleSelected('Mrs'); ?>>
Mrs
</option>
<option value="Ms" <?php echo titleSelected('Ms'); ?>>
Ms
</option>
</select>
</div>
已编辑:
function titleSelected($value){
if ($tenant_details->tenant_title == $value) return 'selected';
return false;
}
function some_function(){
// your code
$output = ''; // initialize $output somewhere outside of if block
if ($current_user->ID){
$output .= '
<form action="" method="POST" class="profileForm" onSubmit="return validateMobile()">
<div class="formField">
<label for="tenant_title">Title</label>
<select name="tenant_title">
<option value="Mr"' . titleSelected('Mr') . '>
Mr
</option>
<option value="Miss"' . titleSelected('Miss') . '>
Miss
</option>
<option value="Mrs"' . titleSelected('Mrs') . '>
Mrs
</option>
<option value="Ms"' . titleSelected('Ms') . '>
Ms
</option>
</select>
</div>
</form>';
}
return $output;
}
echo some_function();
您的代码存在的问题是您无法将 $tenant_details->tenant_title
与一个值进行比较,因为 $tenant_details
是在您的函数之外请求的。要了解有关变量范围的更多信息,请查看 PHP variable scope
有两种解法:
您只需将对象传递给您的函数即可:
titleSelected($tenant_details, 'Ms');
function titleSelected($tenant_details->tenant_title, $val2){
if ($tenant_details->tenant_title == $val) {
return 'selected';
}
return "";
}
直接传值比较:
titleSelected($tenant_details->tenant_title, 'Ms');
function titleSelected($val1, $val2){
if ($val1 == $val2) {
return 'selected';
}
return "";
}
我有以下代码来构建下拉表单域:
if ($current_user->ID) {
$output .= '
<form action="" method="POST" class="profileForm" onSubmit="return validateMobile()">
<div class="formField">
<label for="tenant_title">Title</label>
<select name="tenant_title">
<option value="Mr"' . titleSelected('Mr') . '>
Mr
</option>
<option value="Miss"' . titleSelected('Miss') . '>
Miss
</option>
<option value="Mrs"' . titleSelected('Mrs') . '>
Mrs
</option>
<option value="Ms"' . titleSelected('Ms') . '>
Ms
</option>
</select>
</div>
以及检查数据库中已有内容的函数:
function titleSelected($value){
if ($tenant_details->tenant_title == $value) return 'selected';
return false;
}
问题是它总是默认为 'Mr',这是第一个选项,无论数据库中有什么。
我错过了什么?
我仍然是 php 的新手,所以请保持温柔...:)
而不是 selected
你应该 return selected="selected"
,像这样:
function titleSelected($value){
if ($tenant_details->tenant_title == $value) return 'selected="selected"';
return false;
}
<div class="formField">
<label for="tenant_title">Title</label>
<select name="tenant_title">
<option value="Mr" <?php echo titleSelected('Mr'); ?>>
Mr
</option>
<option value="Miss" <?php echo titleSelected('Miss'); ?>>
Miss
</option>
<option value="Mrs" <?php echo titleSelected('Mrs'); ?>>
Mrs
</option>
<option value="Ms" <?php echo titleSelected('Ms'); ?>>
Ms
</option>
</select>
</div>
已编辑:
function titleSelected($value){
if ($tenant_details->tenant_title == $value) return 'selected';
return false;
}
function some_function(){
// your code
$output = ''; // initialize $output somewhere outside of if block
if ($current_user->ID){
$output .= '
<form action="" method="POST" class="profileForm" onSubmit="return validateMobile()">
<div class="formField">
<label for="tenant_title">Title</label>
<select name="tenant_title">
<option value="Mr"' . titleSelected('Mr') . '>
Mr
</option>
<option value="Miss"' . titleSelected('Miss') . '>
Miss
</option>
<option value="Mrs"' . titleSelected('Mrs') . '>
Mrs
</option>
<option value="Ms"' . titleSelected('Ms') . '>
Ms
</option>
</select>
</div>
</form>';
}
return $output;
}
echo some_function();
您的代码存在的问题是您无法将 $tenant_details->tenant_title
与一个值进行比较,因为 $tenant_details
是在您的函数之外请求的。要了解有关变量范围的更多信息,请查看 PHP variable scope
有两种解法:
您只需将对象传递给您的函数即可:
titleSelected($tenant_details, 'Ms'); function titleSelected($tenant_details->tenant_title, $val2){ if ($tenant_details->tenant_title == $val) { return 'selected'; } return ""; }
直接传值比较:
titleSelected($tenant_details->tenant_title, 'Ms'); function titleSelected($val1, $val2){ if ($val1 == $val2) { return 'selected'; } return ""; }