输入类型编号的Javascript验证

时间:2019-02-18 06:14:52

标签: javascript

我有输入类型数字以提供分钟数的数据。如何验证此字段以接受以下情况,

  1. 它只能接受正数,最小值为0.5
  2. 它应该接受1.5、0.5之类的值,但不能接受1.5.5、12.5.6,-0.5之类的值

我尝试使用下面的代码,但是它接受多个点,

    class SelectMedicineAdapter (val medicineList : ArrayList<String>, val context: Context) : RecyclerView.Adapter<RecyclerView.ViewHolder>()  {
    var selectedCheckBoxMedicineList : ArrayList<String> = ArrayList()

    override fun onBindViewHolder(holder: RecyclerView.ViewHolder, position: Int) {

        holder.itemView.textViewSelectMedicineName.text = medicineList.get(position)

        holder.itemView.checkboxSelectMedicine.setOnCheckedChangeListener { buttonView, isChecked ->
            val itemText = medicineList.get(position)

            if (isChecked) {
                selectedCheckBoxMedicineList.add(itemText)

            } else {
                selectedCheckBoxMedicineList.remove(itemText)
            }


        }
    }

    fun getSelectedMedicineList(): ArrayList<String> {
        return selectedCheckBoxMedicineList
    }

    override fun getItemCount(): Int {

        return medicineList.size
    }

    override fun onCreateViewHolder(holder: ViewGroup, p1: Int): RecyclerView.ViewHolder {

        val v= (LayoutInflater.from(context).inflate(R.layout.row_select_medicine_adapter,holder,false))
        return ViewHolder(v)
    }

    class ViewHolder (itemView: View): RecyclerView.ViewHolder(itemView){

        var textViewSelectMedicineName = itemView.textViewSelectMedicineName
        var imageViewPlusButton = itemView.imageViewPlusButton
        var imageViewMinusButton = itemView.imageViewMinusButton
        var checkboxSelectMedicine = itemView.checkboxSelectMedicine

    }


}

3 个答案:

答案 0 :(得分:1)

使用函数来测试输入值:

function isInvalidInput (val) {
  return parseFloat(val) < 0.5 || isNaN(val);
}

console.log( isInvalidInput("-0.5") );   // true
console.log( isInvalidInput(-2) );       // true
console.log( isInvalidInput("1.2.5") );  // true
console.log( isInvalidInput("0.4") );    // true
console.log( isInvalidInput(0.4) );      // true
console.log( isInvalidInput("0.5") );    // false
console.log( isInvalidInput("1.2") );    // false
console.log( isInvalidInput("1000.9") ); // false
console.log( isInvalidInput(0.5) );      // false
console.log( isInvalidInput(0.999) );    // false

其中parseFloat(val) < 0.5(如有必要,分析字符串并确保)大于0.5-禁止使用负值,而isNaN解析字符串并检查格式是否为{{ 1}}。

如果函数引发一个Number标志,则输入为无效
如果您想反转逻辑(例如:true)而不是使用isValidInput

使用ES6 syntax

return !( /*logic here*/ );

答案 1 :(得分:0)

您可以防止用户在按键事件中使用.输入超过1个-e.preventDefault()

let input = document.querySelector('input');
input.addEventListener('keydown',(e) => {
  if((e.key === '.' && e.target.value.includes('.')) || e.key === '-'){
    e.preventDefault();
    console.log("Wrong Input")
  }
})
input.addEventListener('blur',(e) => {
   if(parseFloat(e.target.value) < 0.5) console.log("Input less than 0.5") 
})
<input id="main" type="number" min="0.5"/>

答案 2 :(得分:0)

您可以将0.5属性值设置为RegExg/^\d+$|^\d+\.\d+$/ .value,以将一个或多个数字的字符串开头与字符串的结尾或字符串开头或多个数字字符,后跟点字符,然后是一个或多个数字字符,后跟字符串的结尾,并检查min事件处理程序上的blur是否小于<input type="number" min="0.5" onblur="if(!/^\d+$|^\d+\.\d+$/.test(this.value)||this.value<this.min)this.value=''">属性值,

solicitudes