如何验证所选选项只能使用一次,而不是两次,可以吗?
how to validate the selected option to only one time can be used, not double, can it?
我是cakephp的初学者,请帮助我。当我想在 cakephp 表单中验证输入类型 selected 时,我卡住了,数据很详细,那里有很多行,第一行。
<select id="AirWayBillDetail0ItemId" name="data[AirWayBillDetail][0][item_id]">
<option value="">-- Select an Item --</option>
<option value="9">Handphone</option>
<option value="10">Accecoris</option>
<option value="11">Alat Tulis Kantor</option>
<option value="12">Voucher Fisik</option>
</select>
我要选件,一次就可以用
示例:
添加第一行,我select手机,
所以,第二行,不能使用那个选项。有什么办法可以解决我的问题吗?
我可以在模型、视图或控制器中进行验证吗?使用 javascript 或 jquery?
您可以使用 jQuery 来实现它。
请参考这个 fiddle http://jsfiddle.net/sqy1n6n3/1/
$('select').on('change', function() {
$('select').find('option').prop('disabled', false);
$('select').each(function() {
$('select').not(this).find('option[value="' + this.value + '"]').prop('disabled', true);
});
});
您想在模型或控制器层中检查它。永远不要依赖 JavaScript 进行验证,因为这会导致您的应用程序出现漏洞(JavaScript 很容易被禁用)。您应该始终在服务器端进行验证,如果您需要一些额外的内联验证,可以通过客户端验证对其进行补充。
您想添加一项检查以确保您提交的数据中没有重复项 item_id
。所以你可以在你的控制器中做类似下面的事情:-
$itemIds = Hash::extract($this->request->data, 'AirWayBillDetail.{n}.item_id');
if (count($itemIds) !== count(array_unique($itemIds))) {
// Invalid item_ids
}
然后您需要处理您希望错误消息的显示方式并确保它不会继续保存。如果你想在模型中执行此操作,你需要查看使用 beforeSave()
回调在保存之前检查 $this->data
和 return false
如果重复被识别。
我是cakephp的初学者,请帮助我。当我想在 cakephp 表单中验证输入类型 selected 时,我卡住了,数据很详细,那里有很多行,第一行。
<select id="AirWayBillDetail0ItemId" name="data[AirWayBillDetail][0][item_id]">
<option value="">-- Select an Item --</option>
<option value="9">Handphone</option>
<option value="10">Accecoris</option>
<option value="11">Alat Tulis Kantor</option>
<option value="12">Voucher Fisik</option>
</select>
我要选件,一次就可以用
示例: 添加第一行,我select手机, 所以,第二行,不能使用那个选项。有什么办法可以解决我的问题吗?
我可以在模型、视图或控制器中进行验证吗?使用 javascript 或 jquery?
您可以使用 jQuery 来实现它。
请参考这个 fiddle http://jsfiddle.net/sqy1n6n3/1/
$('select').on('change', function() {
$('select').find('option').prop('disabled', false);
$('select').each(function() {
$('select').not(this).find('option[value="' + this.value + '"]').prop('disabled', true);
});
});
您想在模型或控制器层中检查它。永远不要依赖 JavaScript 进行验证,因为这会导致您的应用程序出现漏洞(JavaScript 很容易被禁用)。您应该始终在服务器端进行验证,如果您需要一些额外的内联验证,可以通过客户端验证对其进行补充。
您想添加一项检查以确保您提交的数据中没有重复项 item_id
。所以你可以在你的控制器中做类似下面的事情:-
$itemIds = Hash::extract($this->request->data, 'AirWayBillDetail.{n}.item_id');
if (count($itemIds) !== count(array_unique($itemIds))) {
// Invalid item_ids
}
然后您需要处理您希望错误消息的显示方式并确保它不会继续保存。如果你想在模型中执行此操作,你需要查看使用 beforeSave()
回调在保存之前检查 $this->data
和 return false
如果重复被识别。