Проверка формы семантического пользовательского интерфейса: URL-адрес изображения

Можно ли проверить, что ввод - это URL-адрес изображения?

Я попробовал такой наивный подход:

validations.img = {
      identifier: 'img',
      rules: [{
        type: 'url',
        prompt: 'not a valid URL'
      },
      {
        type: "contains[.png, .jpg, .jpeg, .gif, .tiff, .tif]",
        prompt: 'not image'
      }]
    };

Но похоже, что contains выполняет операцию AND. Могу ли я сделать операцию?


person mikestaub    schedule 06.04.2015    source источник


Ответы (1)


semantic-ui позволяет вам добавить функцию добавления правил проверки на $.fn.form.settings.rules, поэтому, например, если вы хотите проверить, содержит ли string один из ваших элементов массива [.png, .jpg, .jpeg, .gif, .tiff, .tif], вы можете добавить новую функцию, например containsInArray, следующим образом:

// function to check if the text contains an element from the array
$.fn.form.settings.rules.containsInArray = function(text,csv){
    var array = csv.split(','); // you're separating the string by commas
    var isContains = false; // return value
    // for each element check it usign contains function
    $.each(array,function(index,elem){
        if($.fn.form.settings.rules.contains(text,$.trim(elem))){
            // if condition are meet set the result as true
            // and breaks the loop
            isContains = true;
            return false;
        }
    });
    console.log(text + " " + isContains);
    return isContains; 
};

Вероятно, эта функция могла бы быть более эффективной, вы можете попробовать ее улучшить, однако в вашем случае она работает.

Затем вам нужно изменить правила, чтобы использовать type: "containsInArray[.png, .jpg, .jpeg, .gif, .tiff, .tif]" вместо type: "contains[.png, .jpg, .jpeg, .gif, .tiff, .tif]".

См. Этот рабочий jsfiddle

person albciff    schedule 08.04.2015