DropDownList のエントリを無効にすることは可能ですか? たとえば、ユーザーが「選択してください」エントリを選択できないようにすることができます。
4 に答える
剣道は現在そのような機能をサポートしていませんが、これは剣道ドロップダウンのオプションを無効にする最も簡単な方法です。
$("#" + id + "_listbox .k-item")[index].disabled = true;
where id -> ドロップダウン
インデックスの ID -> 無効にするドロップダウン内の要素の位置。
それが役に立てば幸い。楽しみ :)
これは検証のための仕事だと思います。選択できないエントリをドロップダウンに表示する必要がある場合は、それらに異なる css を指定し (グレー表示)、値が選択されるとすぐに何らかのアクション (検証メッセージ) を実行します。ドロップダウンで選択を解除したり、他のトリックを実行したりすると、ユーザーが混乱します。機会があれば、ドロップダウンからアイテムを削除し、選択できない場合は表示しないでください-RGrahamが提案したように. 以下は、オプションのラベル (「選択してください」と求めたもの) のエントリを検証する方法と、変更後に選択された値を取得する方法の例です。
フィドル: http://jsfiddle.net/vojtiik/KpMk4/1/
// create DropDownList from input HTML element
var ddl = $("#color").kendoDropDownList({
dataTextField: "text",
dataValueField: "value",
dataSource: data,
index: 0,
optionLabel: "Select color...",
change: function () {
validator.validate();
if (ddl.value() == 3)
{
console.log('Do something ?');
}
}
}).data("kendoDropDownList");
var validator = $("#color").kendoValidator().data("kendoValidator");
Select-Event を使用して、このオプションを無効にすることができます。
次のように簡単です。
$('input').kendoComboBox({
dataTextField: 'text',
dataValueField: 'id',
dataSource: {
transport: {
read: function(options) {
//instead, specify ajax call or get data from somewhere else
options.success([{ id: -1, text: 'Please select' }, {id: 1, text: 'A'}]);
}
}
},
select: function(e) {
var dataItem = this.dataItem(e.item.index());
if(dataItem.id === -1) {
e.preventDefault();
}
}
});
私の場合、ユーザーに権限がない場合、ドロップダウンのオプションを無効にする必要があります。このオプションを無効にすることはできませんが、このオプションを削除しました。このコードが役に立ちますように。
@(Html.Kendo().DropDownListFor(i => i.CallTypeId)
.Name("CallTypeId")
.HtmlAttributes(new { style = "width:100%" })
.DataTextField("MasterValueName")
.DataValueField("MasterValueId")
.Events(x => x.Open("ManageSecurity"))
.DataSource(source =>
{
source.Read(read =>
{
read.Action("GetCallType", "Common", new { Area = "" });
});
})
.OptionLabel("Select Call Type")
)
function ManageSecurity() {
debugger;
var result = '@TrackingHelper.CurrentUser.IsViewTestCallType';
if (result == "False") {
var ds = $("#CallTypeId").data("kendoDropDownList").dataSource;
debugger;
var elementToRemove = null;
for (var i = 0; i < ds._data.length; i++) {
var element = ds._data[i];
debugger;
if (ds._data[i].MasterValueId === "335d2eae-dc47-40f7-b616-a2501b2f60bc") {
debugger;
elementToRemove = ds._data[i];
}
}
if (elementToRemove) {
debugger;
ds.remove(elementToRemove);
}
}
else {
debugger;
}
}