Дизайнер форм jQuery UI (RAD / GUI) - PullRequest
1 голос
/ 31 января 2011

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

Моя главная задача - сделать jQuery wigets "только для чтения". У меня была следующая идея:

<style type="text/css">
    .widget-wrap { position: relative; }
    .widget-overlay { position: absolute; left:0; right:0; top:0; bottom:0; /*maybe z-index as well*/ }
</style>

<div class="widget-wrap" id="wdt1">
    <button class="jquery-widget">Hello World!</button>
    <div class="widget-overlay"><!----></div>
</div>

<script type="text/javascript">

    $(function() {
        $("button.jquery-widget").button();
    });

    function widgetLock(){
        $("#wdt1 .widget-overlay").show();
    }

    function widgetRelease(){
        $("#wdt1 .widget-overlay").hide();
    }

</script>

Надеюсь, мой пример имеет смысл:)

Мои вопросы;

  • тебе это нравится?
  • Вы знаете о лучшем или другом способе?
  • Вы видите возможные проблемы с ним?

Ответы [ 2 ]

2 голосов
/ 31 января 2011

Я бы сказал, что это очень плохая идея: 1) вы можете найти оверлей в странном месте при определенных разрешениях браузера и т. Д. И 2) вы все равно можете перейти к элементу.

Намного лучшелибо;

  1. Скрыть элемент
  2. Отключить элемент
  3. Заменить текстовые поля метками, кнопки с графикой и т. д.
  4. Отключить щелчок покнопка

edit Вы можете использовать jQuery, чтобы отменить привязку событий к элементам, а затем перепривязать их позже.

1 голос
/ 31 января 2011

Если бы я собирал конструктор форм, я бы сделал все элементы div с изображением фактического виджета в качестве фонового изображения CSS, так что вы можете перетаскивать представление виджета по форме, не активируя его или не имея какого-либо изпроблемы наложения.

Если вы действительно хотите, чтобы он выглядел как готовый продукт, вы можете иметь фактический виджет, вложенный в div, но невидимый, когда пользовательская мышь находится внутри div, когда пользователь перемещает мышь изЗатем div снова делает виджет видимым.

DC

Да. Я знал, что при растяжении фоновое изображение будет выглядеть неправильно.Так что я думал об этом по дороге домой.Лучше было бы создать сэндвич виджета, поместив виджет между 2 делениями, нижний делитель управляет размером, а положение сверху предотвращает активацию виджета

<html>
<head>
<script language="JavaScript" type="text/JavaScript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.4.4/jquery.min.js"></script>
<script language="JavaScript" type="text/JavaScript" src="https://ajax.googleapis.com/ajax/libs/jqueryui/1.8.9/jquery-ui.js"></script>

<style type="text/css">
<!--
.widget {
    height: 100%;
    width: 100%;
}
.widget_overlay {
    border: thin solid #FF0000;
    position: absolute;
    top: 1px;
    left: 1px;
    right: 1px;
    bottom: 1px;
    right: 1px;
    visibility:visible
}
.sz_controller {
    position:absolute;
    width:365px;
    height:61px;
    left: 142px;
    top: 75px;
}
-->
</style>
<script language="JavaScript" type="text/JavaScript">
function ShowHide(button,id){
    elem = document.getElementById(id)
    if (elem.style.visibility=='hidden') {
        elem.style.visibility='visible'; 
        button.value="Hide Overlay";
    } else {
        elem.style.visibility = 'hidden'; 
        button.value="Show Overlay";
    }
}
</script>


</head>

<body>
<input type="button" name="Button" value="Hide Overlay" onClick="ShowHide(this,'widget_overlay')">
<div id="draggable" class="sz_controller" style=""><select class="widget" name="test">
  <option>test 1</option>
  <option>test 2</option>
  <option>test 3</option>
</select><div id="widget_overlay" class="widget_overlay"></div></div>
<script>
    $(function() {
        $( "#draggable" ).draggable();
    });
    </script>
</body>
</html>

. Вышеописанное будет работать в firefox

Нажатие на кнопку скрывает оверлейный элемент div, позволяющий проверить виджет. Вы можете перетащить объект по экрану, логика изменения размера не была реализована.

DC

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...