Использование Javascript для проверки ответа в текстовом поле


Я новичок в Magento. У меня есть следующие требования.

На странице есть текстовое поле, в котором клиент вводит идентификатор. Как только идентификатор введен, мне нужно проверить, доступен ли этот идентификатор в OMS с помощью вызова веб-службы OMS. И если идентификатор действителен, мне нужно включить кнопку "Отправить" на странице. Если идентификатор недействителен, мне нужно отключить кнопку "Отправить". Не мог бы кто-нибудь дать мне какие-нибудь указания по этому поводу.

Спасибо

Обновление: Я пытался это сделать используя следующий код, Javascript: Функция будет вызываться при нажатии кнопки "Отправить"

                   submit.onclick = function()
                    {
                        $.ajax
                        ({
                            url: "<?php echo $this->getUrl('checkout/OnepageController/checkid')?>",
                            type: "POST",
                            data: {id: '2345'},
                            dataType: json,
                            success: function(data) {
                                status = data;
                            }
                        });
                    if (status=='invalid')
                        {
                            alert('id function was not hit');

                            return false; // cancel submission
                        }
                    else if (status=='valid')
                        {
                        alert('id function was hit');
                        return true;
                        }
                    }

Php: Контроллер Magento

public function checkidAction()
{
    $id = $_POST['id'];
    if ($id=='1234')
    {
    $status = "valid";
    }
    else
    {
        $status ="invalid";
    }

    echo json_encode($status);
}

Не могли бы вы, пожалуйста, сказать мне, если здесь что-то не так. Я не могу вернуть информацию о статусе обратно в вызов ajax. Спасибо

Author: Magento_Newbie, 2014-10-01

1 answers

Я бы использовал класс проверки формы magento, затем создал новую "удаленную проверку", взглянул на Проверку AJAX поля формы Magento

В свой файл phtml добавьте

<script>

Validation.add('validate-customer-id', 'Please enter a valid id. For example xxx-yy-mmm.', function(v) {     

    // do your OMS webservice call in your controller 
    // you could use post this need to be secure
    var url = '<?php echo $this->getUrl('checkout/OnepageController/checkid', array('id' => 2345))?>' + encodeURIComponent(v);

    var result = false;

    new Ajax.Request(url, {
        method: 'get',
        asynchronous: false,
        onSuccess: function(transport) {
            var obj = response = eval('(' + transport.responseText + ')');

            if (obj.is_available === 0) {
                result = false;
            } else {
                result = true; /* return true or false */    
            }
        }
    })

    return result;
});

</script>

Обновите ввод с помощью

<input ... class=".. validate-customer-id" />

В вашем контроллере

public function checkidAction()
{
    $id = $this->getRequest()->getParam('id');
    if ($id=='1234')
    {
       $status = array('is_available' => 0);
    }
    else
    {
       $status = array('is_available' => 1);
    }

    echo json_encode($status);
}

Также см. Пользовательская проверка прототипа Magento

 3
Author: Renon Stewart, 2017-05-23 12:37:13