ФорумПрограммированиеJavaScript → энто просто ужжжос(нах)...

энто просто ужжжос(нах)...

  • Rotten

    Сообщения: 2243 Репутация: N Группа: Адекваты

    Spritz 14 января 2009 г. 11:23

    мне надо динамически на клиентской стороне активировать/деактивировать радиобуттоны в зависимости от определенной логики(тоесть значения, выбранного в селекте)…

    значить энто - хтмльная форма…
     <tr><td><b>Страна</b></td><td>   <select id="countries" name="countries"  onchange="choose();">
    <option selected value="none">Выберите страну</option>
    <option value="Ukraine">Украина</option>
    <option value="Russia">Россия</option></select></td></tr>
    <tr><td><br></td></tr>
    <tr><td><b>способ оплаты</b></td>
    <td> <input type="radio" name="payMethod" value="cash">Наличными<br>
    <input type="radio" name="payMethod" value="post">Почтой<br>
    <input type="radio" name="payMethod" value="cD">Кредитной картой Visa/MasterCard <br>
    <input type="radio" name="payMethod" value="WM">WebMoney<br></td></tr>
    <tr><td><br /></td></tr>
    <tr><td><b>способ доставки</b></td>
    <td><input type="radio" name="deliveryMethod" value="standAlone">Самовывоз<br> <input type="radio" name="deliveryMethod" value="courier">Куръером во Львове<br>
    <input type="radio" name="deliveryMethod" value="post">Почтой<br><br></td></tr>
    <tr><td align="center" colspan="2"><input type="submit" name="continue" value="отослать"></td></tr>


    Да, я знаю - код по-блядскому оформлен…я просто не верстальщик, но тут вроде как и разобраться еще можна(тоеть случай не из худшых)))…

    Идем, дальше……яваскрипт….


    function choose()
    {
    var list = document.getElementById("countries");
    var selectedOption = list.options[list.selectedIndex].value;

    var payMethod = document.getElementsByName("payMethod");
    var deliveryMethod = document.getElementsByName("deliveryMethod");

    switch (selectedOption)
    {
    case "none":
    for(var i=0;i<payMethod.length;i++)
    {
    payMethod.disabled = true;
    }
    for(var i=0;i<deliveryMethod.length;i++)
    {
    deliveryMethod.disabled = true;
    }
    break;

    case "Ukraine":
    for(var i=0;i<payMethod.length;i++)
    {

    switch(payMethod.value)
    {
    case "cash": payMethod.disabled = true;
    break;
    case "post": payMethod.disabled = true;
    break;
    case "cD": payMethod.disabled = false;
    break;
    case "WM": payMethod.disabled = false;
    break;

    }
    }

    for(var i=0;i<deliveryMethod.length;i++)
    {

    switch(deliveryMethod.value)
    {
    case "standAlone": deliveryMethod.disabled = true;
    break;
    case "courier": deliveryMethod.disabled = false;
    break;
    case "post": deliveryMethod.disabled = true;
    break;

    }
    }

    break;

    case "Russia":
    for(var i=0;i<payMethod.length;i++)
    {

    switch(payMethod.value)
    {
    case "cash": payMethod.disabled = true;
    break;
    case "post": payMethod.disabled = false;
    break;
    case "cD": payMethod.disabled = true;
    break;
    case "WM": payMethod.disabled = true;
    break;

    }
    }

    for(var i=0;i<deliveryMethod.length;i++)
    {

    switch(deliveryMethod.value)
    {
    case "standAlone": deliveryMethod.disabled = true;
    break;
    case "courier": deliveryMethod.disabled = false;
    break;
    case "post": deliveryMethod.disabled = false;
    break;

    }
    }


    break;
    }
    }

    Да, оно работает, оно все на лету меняет…все без ошыбок….
    ….но, энто просто пиздец…вы посмотрите на этих 90 строчек кода…
    я чето долго думал и не знал как можно изменить…
    а вам не кажеться - что никак(?….что это - проклятье JS-кодера)?

    Например свойство disabled для какогото определенного елемента в цыкле в "тру" не поставишь, ибо когда выберешь в селекте шото другое - то оно так и останеться….короче то шо надо изменять тупо каждый елемент - это стопудов….
    вообщем…если есть у когото мнения какието, то подтолкните хотябы какуюто мысль….
    ….пиздец….заибешся писать….
  • md5

    Сообщения: 11948 Репутация: N Группа: в ухо

    Spritz 14 января 2009 г. 11:47, спустя 24 минуты 5 секунд

    jquery уменьшит кол-во кода и затрачиваемого времени
    все умрут, а я изумруд
  • Rotten

    Сообщения: 2243 Репутация: N Группа: Адекваты

    Spritz 14 января 2009 г. 11:51, спустя 4 минуты 46 секунд

    ну а без фреймворков?
    …..тут вижу, никак)…..
  • phpdude

    Сообщения: 26624 Репутация: N Группа: в ухо

    Spritz 14 января 2009 г. 12:58, спустя 1 час 6 минут 32 секунды


    ну а без фреймворков?
    …..тут вижу, никак)…..

    без фреймворков тут никто тееб советы не даст. тут был сап, он любит строчить все на чистом жс, но после праздников он куда то делся)))))

    Write Less, DO MORE! © jQuery
    Сапожник без сапог
  • Rotten

    Сообщения: 2243 Репутация: N Группа: Адекваты

    Spritz 14 января 2009 г. 13:02, спустя 3 минуты 46 секунд

    мда……
    похоже он не один такой……
    я как не странно, сам люблю…….)
  • phpdude

    Сообщения: 26624 Репутация: N Группа: в ухо

    Spritz 14 января 2009 г. 13:05, спустя 3 минуты 7 секунд


    мда……
    похоже он не один такой……
    я как не странно, сам люблю…….)
    видимо вы еще новичок и не сталкивались с большими и трудоемкими вещами + кроссбраузерностью. мы порассуждаем с вами на эту тему когда столкнетесь ;)
    Сапожник без сапог
  • Rotten

    Сообщения: 2243 Репутация: N Группа: Адекваты

    Spritz 14 января 2009 г. 13:24, спустя 19 минут 29 секунд

    phpdude, если новичок, то точно не с нуля…
    а с трудными вещами действительно очень редко приходилось сталкиваться……
    ………да и вобщемто у меня - вредная привычка: я всегда стараюсь избегать сложных вещей в этом роде(вместо этого стараюсь обходить простыми путями)……
    хотя делаю этим хуже только себе(…….
  • phpdude

    Сообщения: 26624 Репутация: N Группа: в ухо

    Spritz 14 января 2009 г. 13:34, спустя 9 минут 20 секунд

    хотя делаю этим хуже только себе(…….

    распечатаю и в рамке повешаю у себя на стене. золотые слова.
    Сапожник без сапог
  • Rotten

    Сообщения: 2243 Репутация: N Группа: Адекваты

    Spritz 14 января 2009 г. 13:42, спустя 8 минут 31 секунду

    шшас по тв на какомто канале часто, анонсируя какойто сериал, повторяют одну и ту же (толковую) фразу: "не ищи легких путей. легких путей нет."…….)
  • kendo

    Сообщения: 446 Репутация: N Группа: Адекваты

    Spritz 14 января 2009 г. 13:47, спустя 4 минуты 54 секунды

    Хем, я ЯваСкрипт знаю на уровне новичка-чайника, фреймворки только видел :)
    Вот смотри, у тебя есть однотипные действия: изменения значений payMethod и deliveryMethod.
    Не факт, что это лучшее решение, но несколько строк сократит (я приведу пример только для pay method):

    ukr_pay = array(0, 1);
    russia_pay = array(0, 2, 3);
    setPay(russia_pay);
    function setPay(available) {
     for(var i=0;i<payMethod.length;i++) {
       payMethod.disabled = true;
     }
     for (var i = 0; i < available.length; i++) {
       payMethod[available].disabled = false;
     }
    }

    P.S. а какой bb-код для ява-скрипта?
  • Rotten

    Сообщения: 2243 Репутация: N Группа: Адекваты

    Spritz 14 января 2009 г. 13:49, спустя 1 минуту 39 секунд



    мда……
    похоже он не один такой……
    я как не странно, сам люблю…….)
    видимо вы еще новичок и не сталкивались с большими и трудоемкими вещами + кроссбраузерностью. мы порассуждаем с вами на эту тему когда столкнетесь ;)


    я от тут подумал….а неужто ты имел ввиду, что вручную хуярить (ДжС) код - дело для новичков, а опытные профессионалы юзают только фреймворки)))?
  • Rotten

    Сообщения: 2243 Репутация: N Группа: Адекваты

    Spritz 14 января 2009 г. 13:52, спустя 3 минуты 23 секунды

    KENDO, ну как сказать…..уже лучше)))….
    чето мне в голову сие не прилезло…..
    спасибо..)
    ……какой бб код?….
    не поверишь, сам догадался - "["js"]"code"["/js"]"
  • Josh

    Сообщения: 2008 Репутация: N Группа: Кто попало

    Spritz 15 января 2009 г. 14:19, спустя 1 день 27 минут

    Вот тут то и начинеаеться ООП - убей мля 2 дня, тем более если не новичёк, возьми ФРЕЙМВОРК, хрен с ним даже не JQuery, хотя другой тебе только враг посоветует. (хотя я всё руки тяну к ExtJs, но видимо или они коротки или я жадный - денег хочу делаю за то за что платят), и потом сам будешь лазать сюда и давать советы кому-то. Разве это напряг 2!!! дня. я не думаю что тебе надо больше, темболее экпирианс не повредит никогда, особенно такой
  • adw0rd

    Сообщения: 22905 Репутация: N Группа: в ухо

    Spritz 15 января 2009 г. 16:22, спустя 2 часа 2 минуты 58 секунд

    Josh, правильно говорить скилс ;-)
    adw/0
  • Rotten

    Сообщения: 2243 Репутация: N Группа: Адекваты

    Spritz 16 января 2009 г. 0:33, спустя 8 часов 10 минут 23 секунды

    акей….спасиба за саветы….

Пожалуйста, авторизуйтесь, чтобы написать комментарий!