Есть ли способ обновить textarea 2 одновременно при вводе текста в текстовой области 1 с использованием функций ajax JSF? [Дубликат]

Это было в моем .htaccess

DirectoryIndex index.html index.htm

index.html, содержащем PHP-код. По умолчанию PHP не будет обрабатывать файлы с такими расширениями, как htm *, как PHP-код.

Вы можете переопределить это, добавив следующее в .htaccess:

<FilesMatch ".+\.html$">
    SetHandler application/x-httpd-php
</FilesMatch>
35
задан BalusC 22 December 2014 в 12:10
поделиться

4 ответа

Вы должны понимать, что jQuery работает с деревом HTML DOM на стороне клиента. jQuery не работает непосредственно с компонентами JSF, как вы писали в исходном коде JSF, но jQuery работает непосредственно с деревом HTML DOM, которое создается этими компонентами JSF. Вам нужно открыть страницу в webbrowser и rightclick, а затем View Source . Вы увидите, что JSF добавляет идентификатор сгенерированных входных элементов HTML с идентификаторами всех родительских компонентов NamingContainer (таких как <h:form>, <h:dataTable> и т. Д.) С : как разделитель по умолчанию. Так, например,

<h:form id="foo">
    <p:selectManyCheckbox id="bar" />
    ...

закончится сгенерированным HTML как

<form id="foo" name="foo">
    <input type="checkbox" id="foo:bar" name="foo:bar" />
    ...

. Вместо этого вам нужно выбрать элементы точно . Однако : является особым символом в CSS-идентификаторах, представляющих псевдоселектор. Чтобы выбрать элемент с идентификатором : в идентификаторе с помощью селекторов CSS в jQuery, вам нужно либо избежать его с помощью обратного слэша, либо использовать селектор атрибутов [id=...] или просто использовать старый getElementById():

var $element1 = $("#foo\\:bar");
// or
var $element2 = $("[id='foo:bar']");
// or
var $element3 = $(document.getElementById("foo:bar"));

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


. В качестве альтернативы вы также можете просто использовать имя класса:

<x:someInputComponent styleClass="someClassName" />

, которое заканчивается в HTML как

<input type="..." class="someClassName" />

, чтобы вы могли получить его как

var $elements = $(".someClassName");

Это позволяет лучше абстрагироваться и повторно использовать. Разумеется, эти элементы не уникальны . Только основные элементы макета, такие как заголовок, меню, содержимое и нижний колонтитул, действительно уникальны, но они, как правило, обычно не находятся в NamingContainer.


Как еще одна альтернатива, вы могли бы просто пройти сам элемент HTML DOM в функцию:

<x:someComponent onclick="someFunction(this)" />
function someFunction(element) {
    var $element = $(element);
    // ...
}

См. также:

72
ответ дан Community 22 August 2018 в 01:53
поделиться

Вы также можете использовать jQuery «Attribute Contains Selector» (здесь находится url http://api.jquery.com/attribute-contains-selector/ )

Например, если у вас есть

 <p:spinner id="quantity" value="#{toBuyBean.quantityToAdd}" min="0"/> 

, и вы хотите что-то сделать на его объекте, вы можете выбрать его с помощью

jQuery('input[id*="quantity"]')

, и если вы хотите распечатать его значение, вы можете сделайте это

alert(jQuery('input[id*="quantity"]').val());

. Чтобы узнать реальный тег html элемента, вы всегда можете посмотреть на реальный элемент html (в этом случае счетчик был переведен на вход) с использованием firebug или, например, инструментов разработчика или просмотра источник ...

Daniel.

5
ответ дан Daniel 22 August 2018 в 01:53
поделиться
  • 1
    Отличная находка! Еще лучше, вы можете использовать «Атрибуты с селектором»: api.jquery.com/attribute-ends-with-selector , который выглядит так в PrimeFaces: & quot; @ (* [id $ = 'IDUsedInPrimeFaces']) & Quot; (Это позволит вам выбрать компонент с id = "IDUsedInPrimeFaces", даже если его идентификатор клиента будет чем-то более похож на id = & quot; form: IDUsedInPrimeFaces & quot ;.) – Andrew 19 April 2017 в 18:13

Если вы используете RichFaces, вы можете проверить rich:jQuery comonent. Он позволяет указать идентификатор стороны сервера для компонента jQuery. Например, у вас есть компонент с указанным идентификатором сервера, тогда вы можете применить любой материал, связанный с jQuery, следующим образом: <rich:jQuery selector="#<server-side-component-id>" query="find('.some-child').removeProp('style')"/>.

Для получения дополнительной информации, пожалуйста, проверьте doumentation .

Надеюсь, что это поможет.

1
ответ дан nndru 22 August 2018 в 01:53
поделиться

Посмотрите, что это поможет вам, когда я выбираю опыт = Да, мой диалог, id которого является dlg3, является popup.and, если значение No, оно не откроется

-3
ответ дан Prafulla Kumar Sahu 22 August 2018 в 01:53
поделиться