javascript — Filemaker, PHP и jquery & gt; показать скрытые элементы

Я повторяю форму (foreach) из моих записей создателя файла, в результате чего появляется идентификатор элемента, имя, флажок, а затем изображение.

В моем понимании мне придется использовать классы или элементы будут иметь одинаковый идентификатор.

Мой код;

foreach($result->getRecords() as $record){
$id = $record->getField('Record_ID_PHP');
$name = $record->getField('DB_Name');
$pic = $record->getField('Photo_Path');
echo '"'.$id.'"<br>';
echo $name.'<br>';
echo '<input type="checkbox" class="check" value="Invoices/Photos/RC_Data_FMS/Invoices_db/Photos/'.$pic.'">';
echo '<div class="pics">';
echo '<img style="width:200px;" src="Invoices/Photos/RC_Data_FMS/Invoices_db/Photos/'.$pic.'"><br>';
echo '<hr>';
echo '</div>';
}

Что приводит к странице, полной записей, флажок и связанное изображение.

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

Изображения будут затем заполнять следующую страницу в формате PDF для печати.

Я надеюсь, что не нужно захватывать значения флажка в виде массива, чтобы затем использовать метод get с сотнями операторов if, но не вижу другого пути?

Я использовал jquery.

$(document).ready(function () {
$('.pics').hide();
$('.check').click(function () {
$('pics').show;
});
$('.pics').hide;
});

а также

$(function()   {
$(".check").click(function(e) {
e.preventDefault();
$('.pics').hide();
$('.pics').show();
});
});

Плюс много похожих альтернатив.

Есть что-то очевидное, чего мне не хватает?

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

Я сделал это ранее со значением, сохраненным в флажке в Filemaker.

$sesame = $print->getField('Allergens::Allergens[11]'); if ($sesame == "Sesame") { $sesame = "checked" ;} else if ($sesame !== "Sesame") {$sesame = "" ;}

Это отображает флажок синхронизирован с Filemaker.

if ($_POST['Sesame'] == 'Sesame'){ $a_sesame = 'Sesame';} else { $a_sesame = 'No Sesame'; }

Это отправляется как переменная в мой скрипт.

if($a_sesame == "Sesame"){$contains_sesame = "Yes";} else { $contains_sesame = "No";}

Это захватывает новое значение из формы.

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

это для этой части длиной 120 строк, это образец, который я должен повторять для каждого повторения этого поля.

Set Variable [ $sesame; Value:GetValue ( Get ( ScriptParameter ) ; 11 ) ]
If [ $sesame = "Sesame" ]
Set Field [ Allergens::Allergens[11]; "Sesame" ] Commit Records/Requests
[ Skip data entry validation; No dialog ]
Else If [ $sesame = "No Sesame" ]
Clear [ Allergens::Allergens[11] ] [ Select ]
Commit Records/Requests
[ Skip data entry validation; No dialog ]
Refresh Window
[ Flush cached join results; Flush cached external data ]
End If

Это было бы слишком большим, чтобы писать для такого количества записей, просто для этих 14 полей использовалось 120 в filemaker и 400 плюс в php.

0

Решение

Я не уверен на 100%, что вы пытаетесь сделать, но это должно сработать. Сначала добавьте дополнительный div, который закрывает входные данные и картинки div, как показано ниже.

foreach($result->getRecords() as $record){
$id = $record->getField('Record_ID_PHP');
$name = $record->getField('DB_Name');
$pic = $record->getField('Photo_Path');
echo '"'.$id.'"<br>';
echo $name.'<br>';
echo '<div>"; // new dive to add
echo '<input type="checkbox" class="check" value="Invoices/Photos/RC_Data_FMS/Invoices_db/Photos/'.$pic.'">';
echo '<div class="pics">';
echo '<img style="width:200px;" src="Invoices/Photos/RC_Data_FMS/Invoices_db/Photos/'.$pic.'"><br>';
echo '<hr>';
echo '</div>'; // new div
echo '</div>';
}

тогда поменяй свою яву на эту

$(document).ready(function() {
$(".pics").hide();
$(".check").click(function() {
$(this).siblings().toggle();
});
});

ну, я надеюсь, это поможет

0

Другие решения

Другой альтернативой может быть установка простого вычисляемого поля контейнера в FileMaker с вычисленным значением:

If ( checkbox; imageField )

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

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

0

Вы можете использовать toggle()функция:

$(function()   {
$('.pics').hide();

$(".check").is(':checked',function(e) {
e.preventDefault();
$('.pics').toggle();
});

});
0
По вопросам рекламы [email protected]