Javascript если заявление не работает для сравнения формы - PullRequest
0 голосов
/ 26 апреля 2018

У меня есть форма начальной загрузки, и я обрабатываю ее с помощью js.но есть проблема с причиной, если оператор не работает правильно.

если вы запустите код, вы увидите, что оператор if, который сравнивает второе и третье поле, работает неправильно для второго и третьего поля в случае 9 ичисло ниже 9 работает, но если вы введете, например, 10 и 5 для второго и третьего поля, оно не будет работать верно.Также, если вы введете 5 и 10 для второго и третьего поля, оно должно вернуть ошибку, но это работает.есть идеи?

function mcalculate() {
    var mainPrice = document.forms["disc"]["price"].value;
    var productPercentage = document.forms["disc"]["t-per"].value;
    var customerPercentage = document.forms["disc"]["c-per"].value;
    var productCount = document.forms["disc"]["count"].value;
    var runProject = true;
    if (isNaN(mainPrice)){
        document.getElementById("error1").innerHTML = "قیمت کالا باید عدد باشد";
        runProject = false;
    }
    else {
        document.getElementById("error1").innerHTML = "";
    }
    if (mainPrice<1){
        document.getElementById("error2").innerHTML = "قیمت کالا باید عدد و مثبت باشد";
        runProject = false;
    }
    else {
        document.getElementById("error2").innerHTML = "";
    }
    if (isNaN(productPercentage ) || isNaN(customerPercentage)){
        document.getElementById("error3").innerHTML = "درصد باید عدد باشد";
        runProject = false;
    }
    else {
        document.getElementById("error3").innerHTML = "";
    }
    if (productPercentage>100 || productPercentage<0){
        document.getElementById("error4").innerHTML = "تخفیف شما بین 0 تا 100 نیست";
        runProject = false;
    }
    else {
        document.getElementById("error4").innerHTML = "";
    }
    if (customerPercentage>100 || customerPercentage<0 ){
        document.getElementById("error5").innerHTML = "تخفیف مشتری بین 0 تا 100 نیست. ";
        runProject = false;
    }
    else {
        document.getElementById("error5").innerHTML = "";
    }
    if (isNaN(customerPercentage)){
        document.getElementById("error6").innerHTML = "درصد باید عدد باشد"
        runProject = false;
    }
    else if(customerPercentage > productPercentage){
        document.getElementById("error6").innerHTML = "تخفیف مشتری از تخفیف شما بیشتر است";
        runProject = false;
    }
    else {
        document.getElementById("error6").innerHTML = "";
    }
    if (isNaN(productCount)){
        document.getElementById("error7").innerHTML = "تعداد کالا باید عدد باشد";
        runProject = false;
    }
    else {
        document.getElementById("error7").innerHTML = "";
    }
    if (productCount<1){
        document.getElementById("error8").innerHTML = "تعداد کالا باید عدد و مثبت باشد";
        runProject = false;
    }
    else {
        document.getElementById("error8").innerHTML = "";
    }
    if (runProject==true){
        document.getElementById("calResult").innerHTML = "das"
    }
    else{
        document.getElementById("calResult").innerHTML = "";
    }
}
<div class="row">
        <div class="col-md-3"></div>
        <div class="col-md-6">
            <form name="disc" class="form-horizontal" action="" method="post">
                <div class="form-group">
                    <label class="control-label col-md-6" for="price">قیمت کالا به تومان :</label>
                    <div class="col-md-6">
                        <input type="text" class="form-control" id="price" placeholder="مثلا 2580000" name="price" required>
                    </div>
                </div>
                <div class="form-group">
                    <label class="control-label col-md-6" for="t-per">درصد تخفیف دریافتی شما :</label>
                    <div class="col-md-6">
                        <input type="text" class="form-control" id="t-per" placeholder="مثلا 8" name="t-per" required>
                    </div>
                </div>
                <div class="form-group">
                    <label class="control-label col-md-6" for="c-per">درصد تخفیف شما به مشتری :</label>
                    <div class="col-md-6">
                        <input type="text" class="form-control" id="c-per" placeholder="مثلا 6" name="c-per" required>
                    </div>
                </div>
                <div class="form-group">
                    <label class="control-label col-md-6" for="count">تعداد کالا :</label>
                    <div class="col-md-6">
                        <input type="text" class="form-control" id="count" placeholder="مثلا 5" name="count">
                    </div>
                </div>
                <div class="form-group">
                    <div class="col-md-4"></div>
                    <div class="col-md-4"></div>
                    <div class="col-md-2">
                        <button type="button" class="btn btn-default" onclick="mcalculate()">محاسبه</button>
                    </div>
                    <div class="col-md-2">
                        <button type="reset" class="btn btn-default">ریست</button>
                    </div>
                </div>
            </form>
        </div>
        <div class="col-md-3">

        </div>
    </div>
    <div class="row">
        <div class="col-md-3"></div>
        <div class="col-md-6">
            <p id="error1" class="red"></p>
            <p id="error2" class="red"></p>
            <p id="error3" class="red"></p>
            <p id="error4" class="red"></p>
            <p id="error5" class="red"></p>
            <p id="error6" class="red"></p>
            <p id="error7" class="red"></p>
            <p id="error8" class="red"></p>
            <p id="calResult"></p>
        </div>
        <div class="col-md-3"></div>
    </div>

1 Ответ

0 голосов
/ 26 апреля 2018

Сначала вы должны привести все входные данные, которые вы хотите использовать / сравнить, как числа, чтобы набрать Number..value всегда возвращает строки.Вы также должны стараться использовать точечную нотацию вместо скобочной, когда это возможно - уменьшает синтаксический шум.

var mainPrice = Number(document.forms.disc.price.value);
var productPercentage = Number(document.forms.disc.['t-per'].value);
var customerPercentage = Number(document.forms.disc.['c-per'].value);
var productCount = Number(document.forms.disc.count.value);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...