2017-12-05 16 views
0

javascriptを使用して、ユーザーが入力した値がそこの値より大きいかどうかを確認しています。しかし、私が更新をクリックすると、エラーメッセージを出さずに別のページにリダイレクトされます。javascriptを使用して値が別の値より大きいかどうかを確認する方法

Javascriptを

<script type="text/javascript"> 

$(function onUpdateClick() { 
    var initVal = $('#quantity').val(); 

    $('#quantity').change(function() { 
     if ($('#quantityI').val() > initVal) 
      console.log('Quantity issued should be less than quantity requested'); 
     else { 

      location.href = '@Url.Action("Index","Issue")'; 
     } 
    }); 

ビュー

<div class="form-group"> 
         @Html.LabelFor(model => model.item.quantity, htmlAttributes: new { @class = "control-label col-md-2" }) 
         @Html.EditorFor(model => model.item.quantity, new { htmlAttributes = new { @class = "form-control" , @readonly="readonly", @id=quantity} }) 
         @Html.ValidationMessageFor(model => model.item.quantity, "", new { @class = "text-danger" }) 
        </div> 

       <div class="form-group"> 
        @Html.LabelFor(model => model.item.quantityI, htmlAttributes: new { @class = "control-label col-md-2" }) 
        @Html.EditorFor(model => model.item.quantityI, new { htmlAttributes = new { @class = "form-control", @id=quantityI } }) 
        @Html.ValidationMessageFor(model => model.item.quantityI, "", new { @class = "text-danger" }) 
       </div> 

モデル [必須]

[Range(0.5,double.MaxValue, ErrorMessage = "You must enter an amount greater than Zero")] 
    [Display(Name ="Quantity Requested")]   
    public double quantity { get; set; } 

    [Required] 
    [Range(0.5, double.MaxValue, ErrorMessage = "You must enter an amount greater than Zero")] 
    [Display(Name = "Quantity Issued")] 
    public double quantityI { get; set; } 
+0

var initVal = $( '数量 ')。 .changeハンドラの内部に があり、動作するはずです。 – Kris

+0

val()は文字列です – epascarello

+0

それはどちらも動作しませんでした –

答えて

0

あなたのコードで問題が見つかりました。値を取得するときにparseInt()関数を使用する必要があります。

<input type="Text" id="quantity" /> 
<input type="Text" id="quantityI" /> 

$(function() 
{ 
    $('#quantity').change(function() 
    { 
     var quantityI = parseInt($('#quantityI').val()); 
     var quantity = parseInt($('#quantity').val()); 
     alert(quantityI);alert(quantity); 
    if(quantityI > quantity) 
     { 
     alert('Quantity issued should be less than quantity requested'); 
     } 
    else { 
     alert('Else called'); 
     } 
    }); 
}); 

ワーキングデモを働いて、次のとおりです。jsfiddle

+0

にすることができます。 (function() –

+0

@SujaeBrown - 変更機能を削除する必要はありません... doucment.ready関数内で変更関数を移動する必要があります。ドキュメントがロードされると、イベントハンドラはテキストボックス –

+0

のイベントを変更するバインドを取得しますが、 –

0

あなたの説明は、いくつかのステップが含まれていません。とにかく私はいくつかのポイントを与えることを試み、それが助けてくれることを願っています。 コントロールの初期値は空の文字列です(私が知る限り)ので、それらを比較すると2つの空の文字列の文字列比較が行われます。 FireFoxのいくつかのバージョンでは、最終的なコントロールの値は、フォーカスを失った後に設定されるので、時々あなたが取得する値は、オンチップイベントの古いものです...

+0

私はあなたが言っていることを理解していますが、私はhtmlでIDを使用していますが、そこに値が格納されていないことを理解していますか?もっと簡単な方法はありますか? –

+0

あなたは正しい軌道にいる100%確信してください)。 論理がOKの場合は、次のように解析する必要があります。 –

関連する問題