Kendo验证器不处理文本更改

时间:2017-11-07 11:48:39

标签: asp.net-mvc kendo-ui telerik kendo-validator

我正在为我的项目使用kendo控件。我使用jquery验证来验证客户端的控件,但由于jquery验证不适用于kendo控件,所以我使用kendo验证器来验证控件。

我正在使用MVC 5项目的数据注释验证。以下是示例dojo

它工作正常,但验证仅出现在焦点输出或模糊事件上。有没有办法验证控制值的变化控制,如jquery验证?

更新

以下是帮助我解决此问题的完整解决方案:

   public class MyAdapter extends RecyclerView.Adapter<MyAdapter.MyViewHolder>
   {
    ManageButtonClicks manageButtonClicks;

public MyAdapter(Context context, List< ModelClass > data, ManageButtonClicks manageButtonClicks)
{
    inflater = LayoutInflater.from(context);
    this.mDataList = data;
    this.ctx = context;
    util = new Util(ctx);
    this.manageButtonClicks = manageButtonClicks;
}
@Override
public MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType)
{

    ViewGroup nonPrimeRow = (ViewGroup) inflater.inflate(R.layout.rowlayout, parent, false);
    MyViewHolder_NON_PRIME holderNonPrime = new MyViewHolder_NON_PRIME(nonPrimeRow);
    return holderNonPrime;
}
  @Override
    public void onBindViewHolder(MyViewHolder holder, final int position)
    {
    ModelClass current = mDataList.get(position);
    MyViewHolder_NON_PRIME holder_not_prime = (MyViewHolder_NON_PRIME) holder;
    holder_not_prime.setdata(current);
}
class MyViewHolder extends RecyclerView.ViewHolder
{

    public MyViewHolder(View itemView)
    {
        super(itemView);
    }
}

public class MyViewHolder_NON_PRIME extends MyViewHolder
{

    private Button btnSave;

    public MyViewHolder_NON_PRIME(View view)
    {
        super(view);
        btnSave = (MonteButton) view.findViewById(R.id.btnSave);
    }

    public void setdata(final ModelClass current)
    {
        btnSave.setOnClickListener(new View.OnClickListener()
        {
            @Override
            public void onClick(View view)
            {
                manageButtonClicks.saveBtnClick();
            }
        });
    }
}

1 个答案:

答案 0 :(得分:2)

你有两种方法来实现你的目的:

使用jndo Unobtrusive Validation with KendoUI

背景

如您所知,Kendo UI Editor会创建与HTML表单元素不同的元素。其他JavaScript编辑器以类似的方式工作。实际的HTML是使用CSS(display: none;)隐藏的,其中存在问题。 默认情况下,jQuery Validation会忽略隐藏的输入字段。表单元素上有validation data-*个属性,但由于它是隐藏的,当不引人注目的验证触发时,编辑器会被忽略

解决方案

您有两种方法可以解决此问题,并完美地使用这两种技术。阅读Making the Kendo UI Editor Work With jQuery Validations,如果您有任何实施问题,请阅读Kendo UI NumericTextBox With jQuery Validation作为 NumericTextBox

的示例

然后,在验证的情况下,您可能无法分配正确的CSS类。您可以阅读adding jquery validation to kendo ui elements

仅使用KendoUI Validators

您应该为验证目的实现所需的事件。在这里,你需要onChange事件才能像jQuery Unobtrusive Validation一样工作。使用以下代码描述了该做什么:

$(document).ready(function () {
    function widgetChange() {
        //place validation logic
    };

    $("#dropdownlist").kendoDropDownList({
        dataTextField: "text",
        dataValueField: "value",
        dataSource: data,
        change: widgetChange
    });
})

您可能希望同时使用!所以看看.Net Mvc 3 Trigger (other than submit button) Unobtrusive Validation

更新

dojo用于实施上一个解决方案,该解决方案将pattern="\d+"添加到搜索输入并附带验证消息。 filtering事件为同一输入调用验证。 请注意您应该根据UI元素使用所需的事件,我们在autocomplete使用了filtering而不是DropDownList使用change

我最近发现了一个新的实现,它很适合尝试和测试。这可以在aspnet-mvc getting-started validation

获得