Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   Добавить ID элементу input (https://javascript.ru/forum/jquery/54303-dobavit-id-ehlementu-input.html)

kolhoz 12.03.2015 19:28

Добавить ID элементу input
 
Как добавить ID элементу input с атрибутом placeholder="Телефон"?

ksa 12.03.2015 19:44

Цитата:

Сообщение от kolhoz
Как добавить ID элементу input с атрибутом placeholder="Телефон"?

Т.е. найти в ДОМе такой элемент и присвоить его атрибуту ID некое значение?

kolhoz 12.03.2015 19:47

найти в DOM элемент input с атрибутом placeholder="Телефон" и присвоить ему ID=phone

danik.js 12.03.2015 20:15

Ручками никак?

kolhoz 12.03.2015 20:19

нет форма формируется из битрикса.. А там копаться в компонентах черт ногу сломит

danik.js 12.03.2015 20:22

А зачем id? Для назначения css?
Может тогда input[name=phone] ? Или что там битрикс прописал в name..

kolhoz 12.03.2015 20:33

id нужен чтобы для поля input сделать маску ввода номера. Нашел скрипт где это делается через id элемента.

В общем вот что формирует битрикс это одно из полей. Точнее то поле для которого я хочу добавить id

<input type="text" placeholder="Телефон" name="form_text_210" value="" size="0">


Хочу к нему добавить ID=phone. Затем выполнить следующий код из скрипта

<script src="jquery.js" type="text/javascript"></script>
<script src="jquery.maskedinput.js" type="text/javascript"></script>
<script>
jQuery(function($){
   $("#phone").mask("(999) 999-9999");
});
</script>

рони 12.03.2015 20:58

kolhoz,
$('[name="form_text_210"]').mask("(999) 999-9999");

:-?

kolhoz 12.03.2015 22:41

Так это понятно.. А если форм на сайте 10-20? и у каждого name разное.. Хотелось бы универсально сделать добавив id=phone ко всем полям у которых есть атрибут placeholder="Телефон".

рони 12.03.2015 23:09

kolhoz,
что мешает заменить на
$('[placeholder="Телефон"]').mask("(999) 999-9999");

ksa 13.03.2015 08:13

Цитата:

Сообщение от kolhoz
А если форм на сайте 10-20?

Если ты уже нашел элемент без ИД, зачем тебе то ИД? :)

laimas 13.03.2015 09:20

А если форм на сайте 10-20? и у каждого name разное

Если много, а имена при этом разные, то это геморрой для сервера, не имена разные они должны иметь, а одно имя ключа массива, вложенным массивом которого будут данные с ключами, к примеру, id пользователей. Тогда на сервере такие данные удобно обработать и производить с ними групповые операции. Это id можно добавлять к имени id-атрибута элемента, группируя их в наборы:

Код:

<?php
$users = array(
    array('uid'=>10, 'email'=>'a@b.as', 'tel'=>'89999999999'),
    array('uid'=>20, 'email'=>'b@b.as', 'tel'=>'87999999999'),
    array('uid'=>30, 'email'=>'c@b.as', 'tel'=>'86999999999')
);

echo '<form>' . implode(array_map(function($d) {
    return '<input type="email" id="mail-' . $d['uid'] . '" value="' . $d['email'] . '" name="email[' . $d['uid'] . ']">
            <input type="tel" id="phone-' . $d['uid'] . '" value="' . $d['tel'] . '" name="phone[' . $d['uid'] . ']">';
}, $users)) . '<button>GO</button></form>';
?>


<script> 
$(function() {
    $('[id|=phone]').mask("(999) 999-9999");
    $('[id|=mail]').mask("???");
});
</script>


//Какой-то кошмар получается с описанием php-массива при форматировании сообщения, поэтому так

kolhoz 13.03.2015 16:32

Спасибо.. А есть какой-нибудь плагин или скрипт, который позволяет наложить маску для полей? А именно для ввода телефона в формате +7 999-99-99 ? Может предложите вариант получше и по новее)

laimas 13.03.2015 16:54

Ну то что есть такой/такие плагины это точно, а назвать их не могу, я их не использую, ибо и без них это вполне можно сделать. Более того, мое мнение в этом вопросе вам не понравится, но скажу - заставлять пользователя вводить номер телефона именно так как вам хочется смысла нет никакого. Пусть вводит как ему удобно, а ваша задача привести ввод к нужному вам формату, и это сделать не сложно уже на стороне сервера. Самое удобное хранение телефона в базе, это число, если есть необходимость производить выборку/поиск в базе по номеру телефона. Превратить же число в +7 999 ..., +7 (999) ... и т.п. для отображения на страницах не сложно.

kravtsov 10.06.2019 16:51

Цитата:

Сообщение от danik.js (Сообщение 360976)
А зачем id? Для назначения css?
Может тогда input[name=phone] ? Или что там битрикс прописал в name..

спасибо!


Часовой пояс GMT +3, время: 21:39.